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

📄 list.cpp

📁 创建静态
💻 CPP
字号:
int i;


link inil()   
{
	link L;
	L=(link)malloc(sizeof(node));
	L->next=NULL;
	return L;
}

void printl(link p)
{
	pr("单链表为:\n");
	for(p=L->next;p;)
	{
		pr("%4d",p->data);
		p=p->next;
	}
	cout<<kg;
}

void creatl(link q)
{
	link p;	
	cout<<"创建链表,0 结束!"<<endl;
	cout<<"例如:2 1 8 0 "<<endl;
	cout<<"依次输入:  ";
	while (true)
	{    
		p = (link)malloc(sizeof(node));
		cin>>p->data;
		if (!p->data ) break;
		q->next=p;
		q=p;
	}
	q->next=NULL;
	pr("创建成功!");
	printl(L);
}


status getel(link L,int i,elemtypel &e)
{
	
	link p=L->next; 
	int j=1;
	while(p&&j<i)
	{p=p->next;
	++j;
	}
	if(!p)
		return ERROR;
	e=p->data;
	return OK;
}


status insl(link &L,int i,elemtypel e)
{
	int j=0;	
	link p,s;
	p=L;
	while(p&&j<i-1)
	{
		p=p->next;
		++j;
	}
	if(!p)
		return ERROR;
	s=(link)malloc(sizeof(node));
	s->data=e;
	s->next=p->next;
	p->next=s;
	return OK;
}


status del(link &L,int i,elemtypel &e)
{
	link p=L,q;
    int j=0;
	while(p->next&&j<i-1)
	{
		p=p->next;
		++j;
	}
	if(!(p->next))
		return ERROR;
	q=p->next;
	p->next=q->next;
	e=q->data;
	free(q);
	return OK;
}


void sort(link &L)
{
	link h,p,r,q,s;
	h=p=(link)malloc(sizeof(node));
	p->next=L->next;
	while(p->next)
	{
		r=p;
		q=p->next;
		while(q->next)
		{
			if(q->next->data<r->next->data)
				r=q;
			q=q->next;
		}
		if(r!=p)
		{
			s=r->next;
			r->next=s->next;
			s->next=p->next;
			p->next=s;
		}
		p=p->next;
	}
	L->next=h->next;
	free(h);
	printl(L);
}


void nixu(link s)
{
	link p,q;
	p=s->next;
	s->next=NULL;
	while(p)
	{
		q=p->next;
		p->next=s->next;
		s->next=p;
		p=q;
	}
	printl(L);
	
}

int lenl(link s)
{
	int i=0;
	while(s->next)
	{
		s=s->next;
		i++;
	}
	return i;
}

void charul()
{
	int b;
	pr("请输入你要插入的位置:\n");
	scanf("%d",&b);
	pr("你想插入的数:\n");
	scanf("%d",&e);
	s=insl(L,b,e);
	if(s==OK)
	{ 
		pr("插入成功\n");
		printl(L);
		cout<<kg;
		
	}
	else
	{
		pr("插入失败!\n");
		printl(L);	
	}
}

void shanchul()
{
	int b;
	pr("请输入你要删除的位置:\n");
	scanf("%d",&b);
	s=del(L,b,e);
	if(s)
	{ 
		pr("删除成功!\n");
		pr("删除第%d个数,该数为%d\n",b,e);
		printl(L);
		cout<<kg;
		
	}
	else
	{
		pr("删除失败!\n");
		printl(L);
		cout<<kg;
		
	}
}

void chal()
{
	int b;
	pr("请输入你要查找第几个数:\n");
	scanf("%d",&b);
	s=getel(L,b,e);
	if(s==OK)
	{ 
		pr("%d是第%d个数\n",e,b);
		printl(L);
	}
	else
	{
		pr("你要查找的数不存在!\n");
		printl(L);	
	}
}

int selectl()
{
	int n;
	cout<<"   *********************************************************************** "<<endl;   
	cout<<"   *                         1.创建                                      * "<<endl;   
	cout<<"   *                         2.查找                                      * "<<endl;    
	cout<<"   *                         3.插入                                      * "<<endl; 
	cout<<"   *                         4.删除                                      * "<<endl;
	cout<<"   *                         5.显示                                      * "<<endl;
	cout<<"   *                         6.排序                                      * "<<endl;
	cout<<"   *                         7.逆序                                      * "<<endl;
	cout<<"   *                         8.求长                                      * "<<endl;
	cout<<"   *                         9.返回上一层                                * "<<endl;
	cout<<"   *                         0.退出                                      * "<<endl;
	cout<<"   *********************************************************************** "<<endl;       
	cout<<"                            选择你想进行的操作:                            "<<endl;   
	cout<<"请选择0~9!"<<endl;
	cin>>n;
	for(;;)
	{
		if(n<0||n>9)
		{
			cout<<"重选"<<endl;
			cin>>n;
		}
		else
			break;
	}
	return n;
	
}

int selectll()
{
	int t;
	switch(selectl())
	{
	case 0:end();break;
	case 1:L=inil();break;
	case 2:creatl(L);break;
	case 3:chal();break;
	case 4:charul();break;
	case 5:shanchul();break;
	case 6:printl(L);break;
	case 7:sort(L);break;
	case 8:nixu(L);break;
	case 9:pr("%d",lenl(L));break;
	}
	cout<<"请选择0~9!"<<endl;
	cin>>t;
	for(;;)
	{
		if(t<0||t>9)
		{
			cout<<"重选"<<endl;
			cin>>t;
		}
		else
			break;
	}
	return t;
	
}


⌨️ 快捷键说明

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