//初始化 
Node*InitList()
{
	Node*head=(Node*)malloc(sizeof(Node));
	head->next=NULL;
	head->data=-1;
	return head;
}

增加数据

void Add(Node*s)
{
	Node*p=s;
	int n;
	printf("你要输入多少数据:");
	scanf("%d",&n);
	printf("请输入%d个数据:",n);
	for(int i=1;i<=n;i++)
	{
		Node*q=(Node*)malloc(sizeof(Node));
		scanf("%d",&q->data);
		p->next=q;
		p=q;
	}
	p->next=s;
}

删除操作

void Delete(Node*s)
{
	int a;
	printf("请输入你要删除的数据:");
	scanf("%d",&a);
	Node*p=s->next;
	int flag=0;
	Node*q=s;
	while(p!=s)
	{
		if(p->data==a)
		{
			q->next=p->next;
			free(p);
			flag=1;
			break;
		}
		p=p->next;
		q=q->next;	
	}	
}

插入操作

void Insert(Node*s)
{
	int a;
	int flag=0;
	Node*q=(Node*)malloc(sizeof(Node));
	printf("请输入你要插入的数据:");
	scanf("%d",&q->data);
	printf("请输入你要插入哪个数据之后:");
	scanf("%d",&a);
	Node*p=s->next;
	while(p!=s)
	{
		if(p->data==a)
		{
			q->next=p->next;
			p->next=q;
			flag=1;
			break;
		}
		p=p->next;
	}
	if(flag==1)
	printf("插入成功!");
	else
	printf("插入失败!"); 
} 
//头插法
/*
void Insert(Node*s)
{
	Node*q=(Node*)malloc(sizeof(Node));
	printf("请输入你要插入的数据:");
	scanf("%d",&q->data);
	q->next=s->next;
	s->next=q;
} */

显示操作

void Display(Node*s)
{
	Node*v=s->next;
	while(v!=s)
	{
		printf("%d->",v->data);
		v=v->next;
	}
}

清空操作

void Empty(Node*s)
{
	Node*p=s->next;
	Node*q=p->next;
	while(p!=s)
	{
		free(p);
		p=q;
		q=q->next;
	}
	free(s);
}

原代码如下
#include<stdio.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Nodenext;
}Node;
//初始化
Node
InitList()
{
Nodehead=(Node)malloc(sizeof(Node));
head->next=NULL;
head->data=-1;
return head;
}
void Add(Nodes)
{
Node
p=s;
int n;
printf(“你要输入多少数据:”);
scanf("%d",&n);
printf(“请输入%d个数据:”,n);
for(int i=1;i<=n;i++)
{
Nodeq=(Node)malloc(sizeof(Node));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=s;
}
void Display(Nodes)
{
Node
v=s->next;
while(v!=s)
{
printf("%d->",v->data);
v=v->next;
}
}
void Empty(Nodes)
{
Node
p=s->next;
Nodeq=p->next;
while(p!=s)
{
free§;
p=q;
q=q->next;
}
free(s);
}
/void Delete(Nodes)
{
int a;
printf(“请输入你要删除的数据:”);
scanf("%d",&a);
Node
p=s->next;
int flag=0;
Nodeq=s;
while(p!=s)
{
if(p->data==a)
{
q->next=p->next;
free§;
flag=1;
break;
}
p=p->next;
q=q->next;
}
}
/
void Insert(Nodes)
{
int a;
int flag=0;
Node
q=(Node*)malloc(sizeof(Node));
printf(“请输入你要插入的数据:”);
scanf("%d",&q->data);
printf(“请输入你要插入哪个数据之后:”);
scanf("%d",&a);
Nodep=s->next;
while(p!=s)
{
if(p->dataa)
{
q->next=p->next;
p->next=q;
flag=1;
break;
}
p=p->next;
}
if(flag
1)
printf(“插入成功!”);
else
printf(“插入失败!”);
}
//头插法
/

void Insert(Nodes)
{
Node
q=(Node*)malloc(sizeof(Node));
printf(“请输入你要插入的数据:”);
scanf("%d",&q->data);
q->next=s->next;
s->next=q;
} /
int main()
{
Node
head=InitList();
Add(head);
// Delete(head);
Insert(head);
printf(“该数据情况如下”);
printf("\n");
Display(head);
Empty(head);
printf(“该链表已清空!”);
return 0;
}

posted on 2020-03-27 21:54  凸凸大军的一员  阅读(68)  评论(0编辑  收藏  举报