类似本题的其它题目的解答
()与上面第题基本相同只是明确说明p指向的不是链表最后那个结点
()与上面第题基本相同仅叙述不同故不再作解答
.[题目分析] 本题链表结点的数据域存放英文单词可用字符数组表示单词重复出现时链表中只保留一个单词是否相等的判断使用strcmp函数结点中增设计数域统计单词重复出现的次数
typedef struct node
{int freg;∥频度域记单词出现的次数
char word[maxsize];∥maxsize是单词中可能含有的最多字母个数
struct node *next;
}node *LinkedList;
()LinkedList creat()∥建立有n(n>)个单词的单向链表若单词重复出现则只在链表中保留一个
{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++;break;}∥单词重复出现频度增
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;
}∥将新结点插入到链表最后
}∥结束for循环
return(la);
}∥结束creat算法
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []