類似本題的其它題目的解答
()與上面第題基本相同只是明確說明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算法
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23322.html