c鍊錶實現遇到的錯誤

2022-04-06 03:52:30 字數 815 閱讀 5172

想完成乙個鍊錶發現有錯誤,**如下:

//

//ö®ç°óã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...