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

📄 listlink.cpp

📁 数据结构单链表的实现,包含链表元素的删除,查找,插入
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MAX 20
typedef struct Lnode
{
	char data;
	struct Lnode *next;
}Linklist;

void create(Linklist *&L,char a[],int n)          //创建链表
{
	Linklist *s,*r;int i;
	L=(Linklist*)malloc(sizeof(Linklist));
	L->next=NULL;
	r=L;
	for(i=0;i<n;i++)
	{
		s=(Linklist*)malloc(sizeof(Linklist));  //创建新的结点
		s->data=a[i];
		r->next=s;
		r=s;
	}
	r->next=NULL;
}
void Insert(Linklist *&L,int i,char &e)       //插入
{
	int j=0;
	Linklist *p=L,*s;
	while(j<i-1&&p!=NULL)
	{ j++;
	  p=p->next;
	}
	if(p==NULL)
		printf("插入错误!");
	else
	{
		s=(Linklist *)malloc(sizeof(Linklist));
		s->data=e;
		s->next=p->next;
		p->next=s;
		printf("插入成功!:");
	}
}
void Delete(Linklist *&L,int i,char &e)               //删除
{
	int j=0;
	Linklist *p=L,*q;
	while(j<i-1&&p!=NULL)
	{ j++;
	  p=p->next;
	}
	if(p==NULL)
		printf("删除错误!:");
	else
	{
		q=p->next;
		if(q==NULL)
			printf("删除错误!:");
		p->next=q->next;
		free(q);
		printf("删除成功!:");
	}
}
void Locate(Linklist *&L,char e)
{
	int j=1;
	Linklist *p=L;
	while(p!=NULL&&p->data!=e)
	{
		p=p->next;
		j++;
	}
	if(p==NULL)
		printf("查找错误!");
	else
		printf("你要查找的元素在第%d个位置:",j);
}
void Display(Linklist *&L)
{
	printf("该单链表如下:\n");
	Linklist *p=L->next;
	while(p!=NULL)
	{
		printf("%c  ",p->data);
		p=p->next;
	}
	printf("\n");
}
void main()
{
	char a[MAX],c;
	Linklist *L;
	int i,n;
	printf("请输入你要建立的单链表元素个数:");
	scanf("%d",&n);
	for (int j=0;j<n;j++)
	{
		printf("输入第%d个元素值:",j+1);
		scanf("%s",&a[j]);
	}
	create(L,a,n);
	while(1)                                                //选择菜单
	{
		int ch;
		printf("\n请选择:\n1. 插入元素");
		printf("\n2. 删除元素");
		printf("\n3. 查找元素");
		printf("\n4. 列表显示");
		printf("\n5. 退出系统\n");
		while(1)
		{
			scanf("%d",&ch);
			if(ch>=1&&ch<=5)break;
			else printf("\n请选择: 1|2|3|4|5.");
		}
		switch(ch)                                
		{
		case 1:printf("请输入你要插入的位置:");
			scanf("%d",i);
			printf("请输入你要插入的元素:");
			scanf("%s",c);
			Insert(L,i,c);break;
		case 2:printf("请输入你要删除的位置:");
			scanf("%d",i);
			Delete(L,i,c);break; 
		case 3:printf("请输入你要查找的元素:");
			scanf("%s",&c);
			Locate(L,c);break;
		case 4:Display(L);break;
		case 5:exit(0);   //退出程序
		default: break;
		}
	}
}

⌨️ 快捷键说明

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