單鏈表函式功能實現

2021-09-24 21:01:46 字數 2349 閱讀 7456

#pragma once

#include

#include

#include

typedef

int sdatatype;

typedef

struct slistnode

node;

typedef

struct slist

slist;

void

slistinit

(slist* pl)

//初始化

node*

creatslistnode

(sdatatype data)

//建立新節點

newnode->data = data;

newnode->pnext =

null

;return newnode;

}void

slistpushback

(slist* pl, sdatatype data)

//尾插

else

pur->pnext = newnode;}}

void

slistpushfront

(slist* pl, sdatatype data)

//頭插

void

slistdelback

(slist* pl)

//尾刪

else

if(pur->pnext ==

null

)else

free

(pur->pnext)

;//先釋放空間

pur->pnext =

null

;//再將野指標置空}}

void

slistdelfront

(slist* pl)

//頭刪

else

}node*

slistfind

(slist* pl, sdatatype x)

//查詢某個x的位置

else

}return

null;}

void

slistinsertafter

(node* pos, sdatatype x)

// 在pos的後面進行插入

void

slisteraseafter

(node* pos)

//刪除pos後面的節點

}void

slistprint

(slist* pl)

//列印

printf

("null\n");

}int

slistempty

(slist* pl)

//檢查空

intslistsize

(slist* pl)

//判斷長

return count;}}

void

slistremove

(slist* pl, sdatatype x)

//刪除x

while

(cur!=

null

) prenode = cur;

cur = cur->pnext;

}return;}

}void

slistremoveall

(slist* pl, sdatatype x)

//刪除所有x

node* prenode;

node* cur = pl->_head->pnext;

while

(cur !=

null)if

(cur ==

null

)return

; prenode = cur;

cur = cur->pnext;

}return;}

}

談一下對刪除特定節點,和刪除所有特定節點函式的理解。

對於刪除第乙個特定元素函式,有三種情況。

判斷鍊錶是否為空

判斷是否是頭乙個節點

再去判斷是否是後面的節點

這三種情況分先後,若出現其中一種情況,後面的就不再判斷。

對於刪除所有指定元素函式,同樣的也要考慮這三種情況,不過還要注意的是當free掉當前節點後,必須重新給當前節點變數賦值,否則會導致出現野指標的現象,例如

while

(cur !=

null

&&cur->data == x)

//先判斷是否為空

在這個裡面每次free(cur)執行完,必須要重新給cur賦新值,否則他就會變成野指標。

單鏈表簡單功能實現

看了鍊錶題,基本上不會做,然後各種找部落格,初次嘗試寫了寫,感覺指定值刪除的功能有點難 所以沒有寫,待學習過後會補上 其他的還可以,這裡面的尤其要注意的是用temp轉換head進行遍歷,主要的 如下,大神多給點學習的建議,謝謝 這是功能體 package csdn public class link...

手動實現單鏈表各個功能LinkedList

description 單鏈表 user starry date 2021 02 10 time 16 56 class node public node int val 無頭單向非迴圈鍊錶實現 public class singlelinkedlist 找最後乙個節點 public node fi...

單鏈表的實現(增 刪 查 改功能)

標頭檔案函式 ifndef slistnode h define slistnode h typedef int datatype typedef struct slistnode slistnode slistnode buyslistnode datatype x void slistprint...