王道資料結構 (4) 單鏈表 刪除節點

2022-06-16 12:42:09 字數 1993 閱讀 5905

p->next = q->next;
p-next  原來是 q  現在變成 q->next  

這個就是將 *q 從鏈中斷開 

**:

/*

單鏈表(含頭結點)

*/#include

#include

typedef

intelemtype;

typedef

struct

lnodelnode,*linklist;

linklist createlist1(elemtype a,

int n); //

頭插法建立單鏈表

linklist createlist2(elemtype a, int n); //

尾插法建立單鏈表

void outputlist(linklist l); //

輸出單鏈表全部元素

int length(linklist l); //

獲取單鏈表長度(不含頭結點)

int insertlnode(linklist l, int i, elemtype e); //

在第i個位置插入結點,即在第i-1個結點之後插入新結點

int deletenode(linklist l, int i, elemtype *e); //

刪除第i個結點,並用e返回其值

void

main();

elemtype e;

l = createlist2(a, 5

); outputlist(l);

insertlnode(l,

6, 6

); outputlist(l);

deletenode(l,

1, &e);

printf(

"%d\n

", e);

outputlist(l); }

linklist createlist1(elemtype a,

int n)

returnl;}

linklist createlist2(elemtype a,

int n)

r->next =null;

returnl;}

//輸出所有鍊錶的思路:

//1.讓頭節點的next 指向下乙個節點

//2. 做乙個迴圈 當超出時打斷迴圈 迴圈內的時候 p 指向下乙個 p 是 現在的節點 p=p-> next 節點會向下乙個移動

void outputlist(linklist l)

printf("\n

");}

int length(linklist l)

return

len;}

int insertlnode(linklist l, int i, elemtype e)

linklist p = l; //

p始終指向第i-1個結點

linklist s =null;

while (--i)

s = (lnode*)malloc(sizeof

(lnode));

s->data =e;

s->next = p->next;

p->next =s;

return1;

} int deletenode(linklist l, int i, elemtype *e)

linklist p = l; //

p指向待刪除結點的前驅結點

linklist q; //

q指向待刪除結點

while (--i)

q = p->next;

p->next = q->next;

*e = q->data;

free

(q);

return1;

}

資料結構 單鏈表 建立,節點刪除,節點插入

unix環境2011 02 03 cpp view plain copy include include include typedef struct student node node creat 建立鍊錶 s num x memcpy s name,stu name,16 p next s p ...

資料結構 刪除單鏈表偶數節點

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中偶數值的結點刪除。鍊錶結點定義如下 struct listnode 函式介面定義 struct listnode createlist struct listnode deleteeven struct listnode head 函式cr...

資料結構 4 單鏈表查詢中間節點

單鏈表中間結點查詢 includeusing namespace std struct node node結構體,裡面有乙個node指標,用來指向下乙個node物件 node create int n 建立鍊錶,引數n表示結點的個數,返回型別是結點指標node p next null 建立完成後,p...