对链表节点进行增删改查是最基本的操作,这篇博客将会来实现对节点的删除。其他的操作可参考《c语言实现链表的基本操作》这篇博客。删除某个节点有两个类型:
(1)删除i某个位置的节点;
(2)判断x值是否在链表中,若存在则删除该节点;
核心代码如下:
//删除pos位置的节点
node *deleteposelement(node *pnode,int pos){
//需要一个头结点来维护
node *phead;
node *pmove;
int i = 1;
if (pos <= 0 || pos > sizelist(pnode)) {
printf("%s函数执行,输入pos值非法,删除节点失败\n",__function__);
return null;
}
phead = pnode;
pmove = pnode;
//单独考虑删除第一个节点
if (pos == 1) {
pmove = pmove->next;
pnode = pmove;
free(phead);
printf("%s函数执行,删除pos=1位置元素成功\n",__function__);
return pnode;
}
while (pmove != null) {
if (i == pos - 1) {
bre