不帶頭節點的單鏈表 基本函式

2021-08-24 17:25:42 字數 1744 閱讀 5399

鍊錶分為帶頭節點和不帶頭節點,頭節點就是在鍊錶的首個節點處不存放資料,而是存放有關此鍊錶的一些資訊

今天我的這篇部落格是有關不帶頭節點的單鏈表實現

結構體:

typedef

int datatype;

typedef

struct node

node, *pnode, list, *plist;

基本函式的實現

void initlinklist(plist* pplist)//初始化

pnode buynode(datatype d)//建立乙個節點

newnode->

data

= d;

newnode->next =

null;

return newnode;

}void pushback(plist* pplist, datatype d)//後插

else

cur->next = buynode(d);

}}void printlinklist(plist plist)//列印單鏈表

printf("null\n");

}void popback(plist* pplist)//後刪

pnode p =

*pplist;

pnode cur =

null;

while (p->next)

if (cur ==

null)

else

}void destroylinklist(plist* pplist)//銷毀

*pplist =

null;

}void pushfront(plist* pplist, datatype d)//頭插

void popfront(plist* pplist)//頭刪

pdel =

*pplist;

*pplist = (*pplist)->next;

free(pdel);

}pnode find(plist plist, datatype d)//找指定位置節點

list

*pcur = plist;

while (pcur)

return

null;

}void insert(plist* pplist, pnode pos, datatype d)//指定位置之前插入

while (pcur->next != pos)

pcur->next = buynode(d);

pcur->next->next = pos;

}void erase(plist* pplist, pnode pos)//指定位置刪除

list

*pcur =

*pplist;

while (pcur->next != pos)

pcur->next = pos->next;

free(pos);

}void erasenottailnode(pnode pos)

int getlistlength(plist plist)

return num;

}void printtailtohead(plist plist)//逆序列印單項鍊表

else

}

以上是有關不帶頭節點的單鏈表,希望可以幫助到你。

實驗2 不帶頭節點的單鏈表

編寫函式slnklist delx linklist head,datatype x 刪除不帶頭結點單鏈表head中第乙個值為x 的結點。並構造測試用例進行測試。include slnklist.h 請將本函式補充完整,並進行測試 linklist delx linklist head,dataty...

單鏈表的基本操作(不帶頭結點)

node.h ifndef node h define node h 不帶頭結點的單鏈表 typedef struct node node,pnode endif node hlist.h ifndef list h define list h include node.h 頭插 void inse...

不帶頭結點的單鏈表

slist.h pragma once typedef int sldatatype typedef struct slistnode slistnode 不帶頭節點的單鏈表 鍊錶初始化 void slistinit slistnode phead 建立新結點 slistnode slistnewn...