鍊錶分為帶頭節點和不帶頭節點,頭節點就是在鍊錶的首個節點處不存放資料,而是存放有關此鍊錶的一些資訊
今天我的這篇部落格是有關不帶頭節點的單鏈表實現
結構體:
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...