C 單連結串列輸出程式訪問衝突求指正

2022-11-30 00:16:10 字數 536 閱讀 9664

1樓:匿名使用者

1全部問題很簡單 initlist(linklist* &l) 這個函式中,for迴圈建立節點時

linklist *s= (linklist*)malloc(sizeof(linklist));

s->data = i + 6;

r->next = s;

少了把s->next=null;這行**,因為s是一個新的節點,下個節點忘了置為null,那麼是不確定的,未初始化的,因為迴圈中把上個結算的next指向了下個節點,所以前面的節點沒事,但是最後一個節點就不知道指向哪了,所以加上這行**即可。

另外這個函式為什麼要使用指標引用呢,感覺多此一舉。

2樓:匿名使用者

你忘了初始化s->next了,所以它指向無效的資料,在display訪問的時候訪問到一個無效地址了

改成這樣就好了

for (int i = 0; i < n; i++)呵呵,最後退出之前也沒釋放申請的記憶體,雖然程式退出會自動釋放所有記憶體,不過為養成個好習慣,最好還是釋放一下~

c程式,單連結串列基本操作,請找出程式中的問題,並標明原因,程式如下

以下 以通過編譯,改動量較大,請仔細閱讀 include include define ok 1 define error 0 define maxsize 100 typedef int elemtype typedef struct node node,linklist 對單連結串列進行初始化 ...

C語言入門,求下圖程式輸出結果,為什麼,謝謝

其實樓上都沒有說到重點上面我來告訴你關鍵點 3個知識點你記住了 運算子優先順序別,迴圈語句 for 的控制範圍 指標於陣列的關係 你要清楚一點,你的for沒有大括號 這也就意味著每一次的迴圈只作用於它下面的那條最近的語句 什麼是語句?就是以分號結束的 至少你寫的這個就只作用於a i p 這一個語句 ...

求c語言大神幫我看看這個程式,輸出不對,怎麼改

以下是修正後的程式,已經在gcc下編譯執行通過無誤。正確的完成了陣列拼接併成功輸出陣列資料。include define maxnum 20 typedef int datatype typedef struct seqlist int mergeql seqlist la,seqlist lb,s...