想完成乙個鍊錶發現有錯誤,**如下:
////ö®ç°óãlistêµïöµä£¬½ñììêôò»ïâóãstructêµïöò»ïâ°é
//¿´¿´×ô¼ºäü²»äüêµïöò»¸öá´±í
#includeusing namespace std;
struct node;
int main(void)
struct node *p;
p=head;
while(p!=null)
}
最後列印的時候只列印最後乙個值,想了想應該是賦值的時候的錯誤,由於賦值是在while迴圈裡,導致node是區域性變數,用完之後就銷毀了,而鍊錶也並沒有在初始化的時候給分配相應的空間。所以只存留了最後乙個。
解決辦法:事先分配好空間。
看了網上的實現,也都是預先分配好空間的,都使用了malloc,這樣在空間在銷毀之前都是存在的,所以你賦值之後,區域性變數沒了,但是值已經賦給相應的空間了。
下邊這樣就是對的了:
#include "stdafx.h"#includeusing namespace std;
struct node ;
int main(void)
else
// cout<<(*tail).num<> n;
} struct node *p;
p = head;
// int i = 1;
while (p != null)
}
猜測:用的空間沒有釋放,如果經常這麼做可能會導致記憶體問題
c 鍊錶的實現
author jacky ma date 23th,may,07 主要實現 1 鍊錶的建立,2 逆置 3 排序 4 有序鍊錶的歸併 5 兩鍊錶連線 6 迴圈鍊錶的判定 include include using namespace std 鍊錶節點結構 struct linknode 建立單鏈表 l...
鍊錶的C 實現
陣列中插入乙個元素或者刪除乙個元素時,必須移動陣列中的元素,從而使動態列表的順序儲存低效。鍊錶可以解決這一問題,它由資料和乙個指向下乙個節點的指標組成。基本的操作有構造 判空 插入 刪除和遍歷。程式如下 include using namespace std template class list ...
c的鍊錶實現
複習了單向鍊錶 雙向鍊錶,中注釋不多,但基本從函式名字就可以知道函式的作用。雙向鍊錶中的前後節點中的思路是按照linux核心中思路寫的。gcc 7.4.0 include include typedef struct node lnode,llist,node void insert llist l...