單鏈表的增刪查改(C語言實現)

2021-10-08 15:15:28 字數 4029 閱讀 5915

#ifndef _common_h_

#define _common_h_

#include

#include

#include

#include

#include

#pragma warning(disable:4996)

#endif _common_h_

#ifndef _slist_h_

#define _slist_h_

#include

"common.h"

// slist.h

typedef

int sltdatetype;

typedef

struct slistnode

slistnode;

// 動態申請乙個節點

slistnode*

buyslistnode

(sltdatetype x)

;// 單鏈表列印

void

slistprint

(slistnode* plist)

;// 單鏈表尾插

void

slistpushback

(slistnode*

* pplist, sltdatetype x)

;// 單鏈表的頭插

void

slistpushfront

(slistnode*

* pplist, sltdatetype x)

;// 單鏈表的尾刪

void

slistpopback

(slistnode*

* pplist)

;// 單鏈表頭刪

void

slistpopfront

(slistnode*

* pplist)

;// 單鏈表查詢

slistnode*

slistfind

(slistnode* plist, sltdatetype x)

;// 單鏈表在pos位置之後插入x

void

slistinsertafter

(slistnode* pos, sltdatetype x)

;// 單鏈表刪除pos位置之後的值

void

slisteraseafter

(slistnode* pos)

;// 單鏈表的銷毀

void

slistdestory

(slistnode*

* plist)

;///

// 動態申請乙個節點

slistnode*

buyslistnode

(sltdatetype x)

// 單鏈表列印

void

slistprint

(slistnode* plist)

printf

("over\n");

}// 單鏈表尾插

void

slistpushback

(slistnode*

* pplist, sltdatetype x)

else

tail->next = p;}}

// 單鏈表的頭插

void

slistpushfront

(slistnode*

* pplist, sltdatetype x)

// 單鏈表的尾刪

void

slistpopback

(slistnode*

* pplist)

else

if(prev ==

null

)else

free

(p);}}

// 單鏈表頭刪

void

slistpopfront

(slistnode*

* pplist)

else

}//單鏈表查詢

slistnode*

slistfind

(slistnode* plist, sltdatetype x)

return

null;}

// 單鏈表在pos位置之後插入x

void

slistinsertafter

(slistnode* pos, sltdatetype x)

// 單鏈表刪除pos位置之後的值

void

slisteraseafter

(slistnode* pos)

}// 單鏈表的銷毀

void

slistdestory

(slistnode*

* plist)

}#endif _slist_h_

#include

"slist.h"

intmain()

printf

("尾插成功!\n");

break

;case2:

slistpopback

(&list)

;printf

("刪除成功!\n");

break

;case3:

printf

("請輸入資料(以-1結束):>");

while

(scanf

("%d"

,&input)

&& input !=-1

)printf

("頭插成功!\n");

break

;case4:

slistpopfront

(&list)

;printf

("刪除成功!\n");

break

;case5:

slistprint

(list)

;break

;case6:

printf

("請輸入要查詢的值:>");

scanf

("%d"

,&input)

; tmp =

slistfind

(list, input);if

(tmp)

else

break

;case7:

printf

("插入到哪個數之後:>");

scanf

("%d"

,&input)

; tmp =

slistfind

(list, input)

;printf

("請輸入要插入的值:>");

scanf

("%d"

,&input)

;slistinsertafter

(tmp, input)

;printf

("插入成功!\n");

break

;case8:

printf

("請輸入要刪除的值的前乙個數:>");

scanf

("%d"

,&input)

; tmp =

slistfind

(list, input)

;slisteraseafter

(tmp)

;printf

("刪除成功!\n");

break

;case9:

slistdestory

(&list)

;printf

("摧毀成功!\n");

break

;default

:printf

("選擇錯誤,請重新選擇!\n");

break;}

system

("pause");

system

("cls");

}while(1

);system

("pause");

return0;

}

C語言實現單鏈表基礎操作 增刪查改

typedef int datatype typedef struct listnode listnode 注 1.以下函式都是針對無環單鏈表 2.若可能修改到原煉表頭結點,都要傳二級指標 函式如下 listnode buynode datatype x 開闢新節點 void pushback li...

資料結構單鏈表的增刪查改(c語言實現)

1 單鏈表 typedef int sltdatatype typedef struct slistnode slistnode 2 動態申請乙個結點 slistnode buyslistnode sltdatatype x 3 單鏈表列印 void slistprint slistnode pli...

單鏈表的增刪查改

include includetypedef struct nodenode,linklist int num 查詢給定值的結點,返回結點指標 node findvalue char c,node head return head 查詢給定位置的結點的值 char findindex value n...