星期五

做了一下数据结构讲的单链表,简单实现了一下创建,查找,插入,删除,遍历

#include<iostream>
using namespace std;
typedef struct LNode{
	int data;
	LNode *next;
}LNode,*Linklist;
void Initlist(Linklist &L)
{
	L=new LNode;
	L->next=NULL;
}
void CreatList(int n,Linklist &L)
{
	L->next=NULL;
	LNode* r=new LNode;
	r=L;
	for(int i=0;i<n;i++)
	{
		LNode* p=new LNode;
		cin>>p->data;
		p->next=NULL;
		r->next=p;
		r=p;
	}
}
int Locatelist(Linklist &L,int e)
{
	int i=1;
	LNode* p=new LNode;
	p=L->next;
	while(p&&p->data!=e)
	{
		p=p->next;
		i++;
	}
	if(!p)
	return 0;
	else
	return i;
}
void Listinsert(Linklist &L,int i)
{
	int n=0;
	LNode* p=new LNode;
	p=L;
	LNode* s=new LNode;
	while(n<i&&p)
	{
		p=p->next;
		++n;
	}
	if(!p||n>i)
	cout<<"输入错误"<<endl;
	else
	{
		cin>>s->data;
		s->next=p->next;
		p->next=s;
	}
}
void Listdelete(Linklist &L,int i,int &e)
{
	int n=0;
	LNode* p=new LNode;
	p=L;
	while(n<i-1&&(p->next))
	{
		p=p->next;
		++n;
	}
	if(!(p->next)||n>i-1||i<=0)
	cout<<"输入错误"<<endl;
	else
	{
		LNode* s=new LNode;
		s=p->next;
		e=s->data;
		p->next=s->next;
		delete s;
	}
}
void TraversalList(Linklist &L)
{
	LNode* p=new LNode;
	p=L->next;
	while(p)
	{
		cout<<p->data<<"	";
		p=p->next;
	}
	cout<<endl;
}
int main()
{
	int e=9999999;
	int a,b;
	Linklist L;
	Initlist(L);
	CreatList(5,L);
	cout<<"删除:"<<endl;
	cin>>b;
	Listdelete(L,2,e);
	if(e!=9999999)
	cout<<"删除的数为:"<<e<<endl;
	cout<<"插入:"<<endl;
	cin>>a;
	Listinsert(L,a);
	int c;
	cout<<"查找:"<<endl;
	cin>>c;
	if(Locatelist(L,c)==0)
	cout<<"没有"<<endl;
	else
	cout<<Locatelist(L,c)<<endl;
	cout<<"遍历:"<<endl;
	TraversalList(L);
}

  

posted @ 2023-09-15 18:15  umiQa  阅读(4)  评论(0编辑  收藏  举报