思路是把乙個大的鍊錶按照字母分為26個小表,每個小煉表中的單詞都以同乙個字母開頭。
下面是實現的程式,核心步驟都有注釋。
1 #include 2 #include 3 #include4 #include 5 #include 6
#define n 30
7 typedef struct word word;
1112
13 typedef struct node node;
18int insert(node **rootp,char *str);
19void print(node*rootp);
20int main (void)21
5051
52print(p1);
5354}55
int insert(node **rootp,char *the_word)
5688
89 wordlink=¤t_node->data;//
處理索引表中的字元和想要插入字元相等的情況
90while((current_word=*wordlink)!=null)
91//
在二級鍊錶中進行單詞的插入,先找到插入位置
9298
if(current_word!=null&&num==0)//
current_word不為空,且num為0,則word已經存在
99return -1
;100
101 new_word=(word*)malloc (sizeof
( word));
102if(new_word==null)
103return -1
;104
105 new_word->word=(char*)malloc(strlen(the_word)+1);//
給單詞分配空間
106if(new_word->word==null)
107return -1
;108
109 strcpy(new_word->word,the_word);//
插入單詞到二級鍊錶中
110 new_word->next=current_word;
111 *wordlink=new_word;
112return0;
113}
114void print(node*rootp)
115128 printf("
null\n");
129 printf("
%c-------%c\n\n
",tmp->letter,tmp->letter);
130 tmp=tmp->next;
131}
132133 }
鍊錶的實現 單鏈表 雙鏈表
鍊錶知識的引入 對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。class node private屬性需要設定getter setter方法 public ...
學生表 用單鏈表實現
定義乙個包含學生資訊 學號,姓名,成績 的單鏈表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生的學號和成績 4 根據指定的位置可返回相應的學生資訊 學號,姓名,成績 5 給定乙個學生資訊,插入到表中指定的位置 6 ...
單鏈表實現
單鏈表 1 邏輯上連續,位置上可以不連續的儲存方式。2 單鏈表由無數個結點組成,每個結點由資料段和指標域組成,資料段儲存資料,指標域儲存後繼的位址。3 每個結點最多有乙個前繼和乙個後繼。4 其中第乙個結點沒有前繼,所以我們通常建立乙個頭結點來儲存他的位置,其中頭結點的資料段我們不關注。5 最後乙個結...