資料結構之單鏈表 C 實現

2021-07-05 01:57:15 字數 2299 閱讀 5137

1.實現乙個單鏈表的定義,生成,長度計算和元素的顯示。

#include"iostream"

using

namespace

std;

typedef

struct student

}listnode;

/*生成乙個單鏈表

*/listnode* creatlist()

else

}head = head->next;

cur->next = null;

return head;}/*

求鍊錶的長度

*/int listlength(listnode *head)

return len;}/*

列印出鍊錶的長度及元素

*/void printlist(listnode *head)

}int main()

2.增加刪除節點功能此時分三種情況,(1)當刪除的是第乙個節點時的情況,(2)當刪除時中間節點的情況,包括最後乙個節點的情況,(3)當需要刪除的節點不在此煉表中時,則直接返回原鍊錶。

當時第一種情況時,只需要將指向第乙個節點的指標指向下乙個節點即可;當第二種情況時,則之前需要儲存當前刪除節點的前乙個節點,讓這個節點指向刪除節點的下乙個節點即可。

**如下:

/*

刪除節點

*/listnode* dellistnode(listnode *head,int num)

if (num == cur->data)

else

}else

return head;

}int main()

現象如下所示:

3.增加鍊錶排序功能

**如下:

/*

排序,使用冒泡法進行公升序排序

*/listnode* sortlist(listnode *head)

cur = cur->next;}}

return head;

}int main()

4.增加插入節點功能假設所給鍊錶是已經按公升序排好序的鍊錶,給定乙個值,將其插入到鍊錶中,使鍊錶仍然是有序的

插入時分三種情況:

(1)當插入節點值是最小的,則直接放在鍊錶的最前面;

(2)當插入節點值既不最大也不最小,則放在鍊錶中的正確位置上;

(3)當插入節點值時最大的,則放在鍊錶的最後。

**如下:

/*

插入節點

*/listnode* insertlistnode(listnode *head, int num)

if (temp->

data

<= cur->

data)

else

}else

return head;

}int main()

現象如下圖所示,三種情況的現象圖都已給出。

4.增加鍊錶的逆置功能

思路:每次儲存三個節點pre,cur,next,改變前兩個節點pre和cur的指標指向,之後重新儲存三個節點,此時cur變成pre,next變成cur,next->next變成next。

**如下:

/*

鍊錶逆置

*/listnode* reverselist(listnode *head)

head->next = null;

head = pre;

return head;

}int main()

資料結構之單鏈表 C 實現

有一段時間沒有寫一些關於資料結構的程式了,正好演算法導論這門課學到紅黑樹,感覺資料結構都忘得差不多了,而且考研還要考,故再拿來複習一下。一 c 實現單鏈表 includeusing namespace std typedef struct lnode lnode,linklist void crea...

資料結構之單鏈表實現

用兩個月的時間好好把資料結構複習一遍,都算不上覆習了,最後的圖的方面完全是新學,希望能堅持下去。一 單鏈表 煉表相比較於陣列更為靈活,儲存方式是鏈式的,插入刪除操作優於陣列,但是查詢操作優於陣列。還是不多介紹了直接上 吧。參考資料結構與演算法分析 c語言版本 標頭檔案 ifndef list h d...

資料結構 單鏈表C實現

什麼叫結構體?就是能夠將不同資料型別集合在一起構造乙個新的資料型別的東西,它有乙個注意點就是不能引用自身作為結構體成員,為什麼呢?因為在建立這種型別的結構體變數時計算機無法得知給結構體變數分配多大的記憶體導致編譯器報錯,提示非法操作。那麼為什麼計算機無法給結構體變數分配某個固定記憶體呢?是這樣的,如...