删除单链表中第k个节点

来源:互联网 发布:道路工程预算软件 编辑:程序博客网 时间:2024/04/30 22:50
#include<stdio.h> 
#include<stdlib.h>
//单链表有头结点的链表 
typedef int ElemType; 
typedef struct node
{
ElemType data;
struct node *next;
}Node,*LINK;
LINK create()//创建一个链表 
{
LINK phead=(LINK)malloc(sizeof(Node));
LINK pend,pnew;
ElemType data;
phead->next=NULL;
pend=phead;
printf("请输入数据:\n");
scanf("%d",&data);
while(data!=0)
{
pnew=(LINK)malloc(sizeof(Node));
pnew->data=data;
pnew->next=NULL;
pend->next=pnew;
pend=pnew;
scanf("%d",&data);
}
return phead;
}
void display(LINK phead)//遍历链表 
{
LINK ptemp=(LINK)malloc(sizeof(Node));
  ptemp=phead->next;
  while(ptemp!=NULL)
  {
  printf("%d ",ptemp->data);
  ptemp=ptemp->next;
  }
  printf("\n");
}
void removeNode(LINK phead,int k)
{
LINK p=phead->next,temp=phead;
for(int i=1;i<=k-1;i++)
{
temp=p;
p=p->next;
}
printf("删除节点元素为:%d",p->data);
temp->next=p->next;
free(p);
}
int main()
{
LINK phead=(LINK)malloc(sizeof(Node));
int data=0;
phead=create();
display(phead);
int value;
printf("请输入一个值:");
scanf("%d",&value);
removeNode(phead,value);
printf("删除后的链表:");
display(phead);
return 0;
}
0 0
原创粉丝点击