数据结构

位置:IT落伍者 >> 数据结构 >> 浏览文章

数据结构考研分类复习真题 第二章 答案[51]


发布日期:2022年08月26日
 
数据结构考研分类复习真题 第二章 答案[51]

() void CreatOut( )∥建立有n个单词的单向链表重复单词只在链表中保留一个最后输出频度最高的k个单词

{LinkedList la;

la=(LinkedList)malloc(sizeof(node));∥申请头结点

la>next=null;∥链表初始化

for(i=;i<=n;i++)∥建立n个结点的链表

{scanf(%sa);∥a是与链表中结点数据域同等长度的字符数组

p=la>next;pre=p;∥p是工作指针pre是前驱指针

while(p!=null)

if(strcmp(p>dataa)==)

{p>freg++;∥单词重复出现频度增

pre>next=p>next;∥先将p结点从链表上摘下再按频度域值插入到合适位置

pre=la; q=la>next;

while(q>freg>p>freg) (pre=q; q=q>next; )

pre>next=p; p>next=q;∥将p结点插入到合适位置

}

else {pre=p;p=p>next;}∥指针后移

if(p==null)∥该单词没出现过应插入到链表最后

{p=(LinkedList)malloc(sizeof(node));

strcopy(p>dataa);p>freg=;p>next=null;pre>next=p;

}∥if 新结点插入

}∥结束for循环建表

int ki=;

scanf(输入要输出单词的个数%d&k);

p=la>next;

while (p && i<k)∥输出频度最高的k个单词

{printf(第%d个单词%s出现%d次\n++ip>datap>freg);

p=p>next;

}

if (!p)

printf(给出的%d值太大\nk);

}∥结束算法

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

               

上一篇:数据结构考研分类复习真题 第二章 答案[52]

下一篇:数据结构考研分类复习真题 第二章 答案[57]