早教吧 育儿知识 作业答案 考试题库 百科 知识分享

创建一个三个域的单链表,data,freq,next指针。freq表示访问该数据元素的频度,每构建一个结点,频度初始化为0,每访问一次频度加1,并将频度按由大到小的顺序排序。这个题目怎么做?

题目详情
创建一个三个域的单链表,data,freq,next指针。freq表示访问该数据元素的频度,每构建一个结点,频度初始化为0,每访问一次频度加1,并将频度按由大到小的顺序排序。这个题目怎么做?
▼优质解答
答案和解析
#include
#include
#define TDATA int
typedef struct _DNode{
struct _DNode *next;
TDATA data;
unsigned int freq;
}*PList;
PList Locate(PList L,TDATA e);
void Display(PList L);
void main()
{
PList LHead=NULL,p;
int i=1;
//creat a list,have a head node
LHead=(PList)malloc(sizeof(struct _DNode));
LHead->data=-1;
LHead->next=NULL;
LHead->freq=0;
do{
p=(PList)malloc(sizeof(struct _DNode));
if(p==NULL)break;
p->freq=0;
p->data=i;
p->next=LHead->next;
LHead->next=p;
}while(i++< 8 );
do{
printf("\nInput a int:");
fflush(stdin);
scanf("%d",&i);
p=Locate(LHead,i);
if(p==NULL)printf("Can't fand the %d\n",i);
else printf("Find the data %d, freq=%d\n",i,p->freq);
Display(LHead);
}while(i>=0);
}
PList Prev(PList L,PList pos)
{
PList p=L;
while((p!=NULL)&&(p->next!=pos)) p=p->next;
return p;
}
void Insert(PList L,PList pos,PList node)
{//insert node before pos
PList p=Prev(L,pos);
if(!p)return;
p->next=node;
node->next=pos;
}
void Delete(PList L,PList pos)
{//delete pos
PList p=Prev(L,pos);
if(!p)return;
p->next=pos->next;
}
PList Locate(PList L,TDATA e)
{
PList p=L->next,q=L->next;
while(p!=NULL&&p->data!=e) p=p->next;
if(p==NULL)return NULL;
p->freq++;
Delete(L,p);
q=L->next;
while(q!=NULL&&(q->freq>p->freq)) q=q->next;
Insert(L,q,p);
return p;
}
void Display(PList L)
{
PList p=L->next;
int i=1;
while(p)
{
printf("No.%d Node:Data:%d,Freq:%d\n",i++,p->data,p->freq);
p=p->next;
}
}
看了 创建一个三个域的单链表,da...的网友还看了以下:

关于时钟度数的数学问题时针每小时转度,每分钟转度分针每分钟转度,每秒钟转度钟表的时针从早上6时转了一  2020-03-30 …

每一处沙滩,每一片耕地,每一座山脉,每一条河流,每一上闪闪发亮的松针,每一只嗡嗡鸣叫.仿写每一处沙  2020-04-06 …

变“中国制造”为“中国创造”就必须()A.坚持四个尊重的方针B.自力更生,关起门来谋发展C.实施科  2020-05-14 …

道道数学题.1)12点零5分时,时钟的时针与分针成度的角.2)每过1分,时钟的分针转过的角度是,时  2020-06-03 …

1爷爷的老式时钟的时针与分针,每隔66分钟两针重合一次,这只时钟每昼夜慢多少分钟?1.爷爷的老式时  2020-06-23 …

时钟的分针每小时走一圈,而时针每小时移动一格.如果从中午12点开始,过12小时,时针分针重合()次  2020-06-23 …

每一处沙滩,每一片耕地,每一座山脉,每一条河流,每一根闪闪发光的松针,每一只嗡嗡鸣叫的昆虫(每一处  2020-07-05 …

我国“十二五”规划纲要强调,坚持自主创新、重点跨越、支撑发展、引领未来的方针,加快建设国家创新体系,  2020-11-24 …

党中央高度重视自主创新能力。十六届五中全会强调“科学技术发展要坚持自主创新、重点跨越、支撑发展、引领  2020-12-19 …

下列对针灸疗法的说法不正确的一项是:[]A.针灸疗法是中国独创的治病方法B.唐代用针灸铜人进行学习和  2020-12-20 …