提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目
提示:这里可以添加本文要记录的大概内容:
例如:在带有头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设为为经的结点 不唯一,试编写算法以实现上述工作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、主要功能的实现
示例:【1,2,3,4】删除 3 --》【1,2,4】
进行动态输入删除。
二、功能实现
代码如下(示例):
#include<stdio.h>
#include<iostream>
void window_cmd_support_uft8(void)
{
#ifdef WIN32
system("chcp 65001 & cls");
#endif
}
struct node
{
int data;
struct node *next;
};
void Del_x(struct node *list,int x)
{
struct node *p=list->next,*pre=list,*q;
while(p!=NULL)
{
if(p->data==x)
{
q=p;
pre->next=p->next;
p=pre->next;
free(q);
}else
{
pre=p;
p=p->next;
// p=p->next;
}
}
}
void print(struct node *list){
while(list!=NULL)
{
printf("%d \n",list->data);
list=list->next;
}
printf("\n");
}
int main()
{
window_cmd_support_uft8();
struct node *hand,*temp,*tail;
int x=0;
int flag;
printf("请输入要删除的值:");
scanf("%d",&flag);
printf("\n");
printf("请输入:");
scanf("%d",&x);
int fucking=1;
while(x!=9999)
{
temp=(struct node*)malloc(sizeof(struct node));
temp->next=NULL;
// if(temp->length==0)
if(fucking==1)
{
temp->data=x;
hand=temp;
tail=temp;
}else{
temp->data=x;
tail->next=temp;
tail=temp;
}
fucking++;
printf("请输入:");
scanf("%d",&x);
}
printf("-----------------------:、\n");
Del_x(hand,flag);
print(hand);
return 0;
}
2.读入数据
代码如下(示例):
while(x!=9999)
{
temp=(struct node*)malloc(sizeof(struct node));
temp->next=NULL;
// if(temp->length==0)
if(fucking==1)
{
temp->data=x;
hand=temp;
tail=temp;
}else{
temp->data=x;
tail->next=temp;
tail=temp;
}
fucking++;
printf("请输入:");
scanf("%d",&x);
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要学习的链表的动态插入与删除