⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2-3-2.txt

📁 数据结构源程序
💻 TXT
字号:
/*链表的基本运算与实现*/
#include <stdio.h>
#include <malloc.h>
typedef int datatype;
typedef struct node
{
	datatype data;
	struct node *next;
}LNode,*LinkList;
void menu();
LinkList Create_LinkList1();
LinkList Create_LinkList2();
int Length_LinkList(LinkList L);
LNode *Get_LinkList(LinkList L,int i);
LNode *Locate_LinkList(LinkList L,datatype x);
int Insert_LinkList(LinkList L,int i,datatype x);
int Del_LinkList(LinkList L,int i);
void main()
{
	int n,m=1;
	LinkList L;

	/*clrscr();*/
	while(m)
	{
		menu();
		scanf("%d",&n);
		switch(n)
		{
			case 1:{
				LNode *p;
				L=Create_LinkList1();
				p=L->next;
				while(p)
				{
					printf("%5d",p->data);
					p=p->next;
				}
				break;
				}
			case 2:{
				LNode *p;
				L=Create_LinkList2();
				p=L->next;
				while(p)
				{
					printf("%5d",p->data);
					p=p->next;
				}
				break;
				}
			case 3:{
				int length;
				length=Length_LinkList(L);
				printf("table length is:%4d",length);
				break;
				}
			case 4:{
				LinkList p;
				int i;
				printf("please input xu hao i:\n");
				scanf("%d",&i);
				p=Get_LinkList(L,i);
				if(p==NULL)
				{
					printf("place is wrong!");
				}
				else
				{
					printf("%5d",p->data);
				}
				break;
				}
			case 5:{
				LinkList p;
				datatype x;
				printf("please input a value x:\n");
				scanf("%d",&x);
				p=Locate_LinkList(L,x);
				if(p==NULL)
				{
					printf("value is wrong!");
				}
				else
				{
					printf("%5d",p->data);
				}
				break;
				}
			case 6:{
				int i,success;
				datatype x;
				LinkList p=NULL;
				printf("please input i and x:\n");
				scanf("%d%d",&i,&x);
				success=Insert_LinkList(L,i,x);
				if(success==1)
				{
					p=L->next;
					while(p)
					{
					printf("%5d",p->data);
					p=p->next;
					}
				}
				else
				{
					printf("no success!");
				}
				break;
				}
			case 7:{
				int i,success;
				LinkList p=NULL;
				printf("please input i\n");
				scanf("%d",&i);
				success=Del_LinkList(L,i);
				if(success==1)
				{
					p=L->next;
					while(p)
					{
					printf("%5d",p->data);
					p=p->next;
					}
				}
				else
				{
					printf("no success!");
				}
				break;
				}
			case 0:m=0;
		}
	}
}
void menu()
{
	/*clrscr();*/
	printf("\n");
	printf("\t\t1.tou cha jian biao\n\n");
	printf("\t\t2.wei cha jian biao\n\n");
	printf("\t\t3.qiu biao chang\n\n");
	printf("\t\t4.xu hao cha zhao\n\n");
	printf("\t\t5.ding wei cha zhao\n\n");
	printf("\t\t6.cha ru\n\n");
	printf("\t\t7.shan chu\n\n");
	printf("\t\t0.exit\n\n");
	printf("\n\n\n\tplease select:");
}
LinkList Create_LinkList1()
{
	int flag=-1;
	LNode *s;
	datatype x;
	LinkList H;
	H=(LNode*)malloc(sizeof(LNode));
	H->data=-32767;
	H->next=NULL;
	printf("please input a value(-1 end):\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		s->next=H->next;
		H->next=s;
		printf("plaese continue input a value(-1 end):\n");
		scanf("%d",&x);
	}
	return H;
}
LinkList Create_LinkList2()
{
	int flag=-1;
	LNode *s,*r;
	datatype x;
	LinkList H;
	H=(LNode*)malloc(sizeof(LNode));
	H->data=-32767;
	H->next=NULL;
	r=H;
	printf("please input a value:\n");
	scanf("%d",&x);
	while(x!=flag)
	{
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		printf("plaese continue input a value(-1 end):\n");
		scanf("%d",&x);
	}
	if(r!=NULL) r->next=NULL;
	return H;
}
int Length_LinkList(LinkList L)
{
	LNode *p=L;
	int j=0;
	while(p->next)
	{
		p=p->next;
		j++;
	}
	return j;
}
LNode *Get_LinkList(LinkList L,int i)
{
	LNode *p=L;
	int j=0;
	while(p->next!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	if(j==i)
	{
		return p;
	}
	else
	{
		return NULL;
	}
}
LNode *Locate_LinkList(LinkList L,datatype x)
{
	LNode *p=L->next;
	while(p!=NULL&&p->data!=x)
	{
		p=p->next;
	}
	return p;
}
int Insert_LinkList(LinkList L,int i,datatype x)
{
	LNode *p,*s;
	p=Get_LinkList(L,i-1);
	if(p==NULL)
	{
		printf("i is wrong!");
		return 0;
	}
	else
	{
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		s->next=p->next;
		p->next=s;
		return 1;
	}
}
int Del_LinkList(LinkList L,int i)
{
	LinkList p,s;
	p=Get_LinkList(L,i-1);
	if(p==NULL)
	{
		printf("i-1 not exist!\n");
		return -1;
	}
	else if(p->next==NULL)
	{
		printf("i not exist!\n");
		return 0;
	}
	else
	{
		s=p->next;
		p->next=s->next;
		free(s);
		return 1;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -