#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node* pnext;
}Node;
int main()
{
int i;
Node* ptest=NULL;//待删除的结点
Node* pnew=NULL;
Node* phead=NULL,*prear=NULL,*pfront=NULL,*pcurrent=NULL;
Node* p=(Node*)malloc(sizeof(Node));
p->data=0;
phead=p;
for(i=1;i<10;i++)
{
pnew=(Node*)malloc(sizeof(Node));
pnew->data=i;
p->pnext=pnew;
p=pnew;
if(5==i) ptest=pnew;
}
p->pnext=NULL;
//遍历一次 链表反转
pfront=phead;
pcurrent=phead->pnext;
phead->pnext=NULL;
for(;pcurrent!=NULL;)
{
prear=pcurrent->pnext;
pcurrent->pnext=pfront;
pfront=pcurrent;
pcurrent=prear;
}
//从无头单链表中删除节点
printf("%d ",ptest->data);
pnew=ptest->pnext;
ptest->data=ptest->pnext->data;
ptest->pnext=ptest->pnext->pnext;
printf("%d ",ptest->data);
free(pnew);
//单链表内存释放
for(p=pfront;p!=NULL;)
{
pnew=p->pnext;
free(p);
p=pnew;
}
return 0;
}
从无头单链表中删除节点
最新推荐文章于 2022-10-16 12:28:29 发布