一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?

一、	创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?

问题描述:

C语言 数据结构

一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单。

#include
typedef int ElemType;
typedef struct lnode
{
ElemType data;
struct lnode *next;
}Lnode,*Linklist;

void CreateList(Linklist &L,int n)
{

L=new Lnode;
L->data=NULL;
L->next=NULL;
Linklist rear=L;//定义指向Lnode结构体指针rear,并指向L
cout<<"请输入"< for (int i=0; i {
Linklist s=new Lnode;
cin>>s->data;
rear->next=s;
rear=s;

}
rear->next=NULL;

}

void Insert(Linklist &L,int i, ElemType x)
{

Linklist p=L;
int j=0;

while (j {
p=p->next;
j++;
}
if (!p) cout<<"位置不合理";//如果i-1已经超出链表的范围
else
{ Linklist s=new Lnode;

s->data=x;

s->next=p->next;

p->next=s;
}
}

void Delete(Linklist &L,int i)
{ Linklist p=L;
int j=0;

while (j {
p=p->next;
j++;
}
if (p||p->next!=NULL) //因为删除的是后面的元素,所以首先判断p不为空及不指向最后一个元素
{ Linklist q=new Lnode;
q=p->next->next;
p->next=q; //直接连上第i+1元素就ok
}
else cout<<"位置不合理";
}

int Find(Linklist &L,int i)
{
Linklist p=L;
int j=0;

while (p&&j {
p=p->next;
j++;
}
if (!p) cout<<"Error";
else cout<<"存在你要找的值为"< return p->data;

}

void Putout(Linklist &L)
{
Linklist p=L->next;
if(!p) cout<<"没有数据存入";
while(p!=NULL)
{
cout<data<<" ";
p=p->next;
}
cout<<'\n';
}

void main()
{
Linklist K;
int i,x,y;
cout<<"请输入您要存储的元素个数:"<<'\n';
cin>>i;
CreateList(K,i);
Putout(K);
while(1)
{ cout<<"请输入您要进行的操作1插入2删除3查找4退出"<<'\n';
cin>>i;

if(i==1) 

{
cout<<"请输入你要插入的位置x和要插入的元素y:"<<'\n';
cin>>x>>y;
Insert(K,x,y);
Putout(K);
continue;
}

if(i==2)
{
cout<<"请输入你要删除的元素位置x:"<<'\n';
cin>>x;
Delete(K,x);
Putout(K); 
continue;
}


if(i==3)
{cout<<"请输入你要查找的元素:"<<'\n';
 cin>>x; 
 Find(K,x); 
 Putout(K); 
 continue;}

if(i==4) break;

else 
{cout<<"你的输入有误"<<'\n';
continue;}

}
}

可以参考下这个博客,再修改写内容就可以
https://blog.csdn.net/lixiaogang_theanswer/article/details/71566985