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

📄 list.cpp

📁 实现链表的程序。有单向链表
💻 CPP
字号:
#include <stdio.h>
#include <iostream.h>
typedef struct LNode{
	long  date;
    struct LNode *next;
} LNode,*LinkList;
void CreatList_L(LinkList &L);
int ListLength(LinkList L);
void ShowList_L(LinkList L);
void ListInsert_L(LinkList &L);
void ListDelete_L(LinkList &L);
void LocateList_l(LinkList &L);
void CreatList_L(LinkList &L){
	L = new LNode; 
	L->next=NULL;// 建立空表
	cout<<"1-正序输入       2-逆序输入"<<endl;
	int i;
	cin>>i;
	if(i==1)
	{
		LinkList p;
	    p=L;
	    cout<<"请输入您要建立的单向链表的数据个数:"<<endl;
	    int n;
	    cin>>n;
	    for(int i=0;i<n;i++){
	    LinkList q=new LNode;//创建要插入的结点并初始化
	    q->next=NULL;
	    cout<<"请输入数据:";
	    cin>>q->date;
	    p->next=q;p=q;}
	}
    if(i==2)
	{
        LinkList p;
		cout<<"请输入您要建立的单向链表的数据个数:"<<endl;
	    int n;
	    cin>>n;
		for (i = n; i > 0; --i) {
        p = new LNode;
        cout<<"请输入数据:";
		cin>>p->date;    
        p->next = L->next;  L->next = p;}

	}
}
int ListLength(LinkList L){
	LinkList p;
	p = L->next ;
	int j=1;
	while(p->next)
		++j;

	return j;
}
void ShowList_L(LinkList L){
    printf("此时您的单向链表是:");
    
	LinkList p;
	p=L->next;
	while(p)
	{   cout<<"|"<<p->date<<"|"<<"->";
	p=p->next;}
	cout<<"NULL"<<endl;
}
void ListInsert_L(LinkList &L){
	LinkList p;
	p=L;
	int i;
	cout<<"请输入您要插入结点的位置:"<<endl;
	cin>>i;
	int j=0;
	while(p&&j<i-1){
		p=p->next;++j;
	}
	if(!p||j>i)
		cout<<"插入错误!"<<endl;
	else 
	{
		LinkList s=new LNode;
	    if(s==NULL)
		cout<<"创建结点失败!"<<endl;
	    else 
		{
			cout<<"请输入您要插入的结点数据 :"<<endl;
	        cin>>s->date;
			s->next=p->next;p->next=s;
		}
	}
}
void ListDelete_L(LinkList &L){
	cout<<"1-全部删除!      "<<"2-删除一个结点"<<endl;
	int i;
	cin>>i;
	LinkList p;
	if(i==1)
	{  while(L->next)
	   {p=L->next;L->next=p->next;delete(p);}
	   cout<<"链表已经清空!请重新建立新链表!"<<endl;
	}
	if(i==2)
	{
		int j,i=0;
		cout<<"请输入您要删除的结点的位置:"<<endl;
		cin>>j;
		p=L;
		while(p->next&&i<j-1){
		p=p->next;++i;
		}
		if(!p->next||i>j)
			cout<<"删除错误!"<<endl;
		else 
		{LinkList q;
		q=p->next;p->next=q->next;delete(q);}
	}
}
void LocateList_L(LinkList &L){
	int i,j=1;
	LinkList p;
	// cout<<ListLength(L);
	cout<<"请输入您要查找的元素的位置:"<<endl;
	cin>>i;
	p=L->next;
	while(p&&j<i){
		p=p->next;++j;
	}
	if(!p||j>i)
		cout<<"查找错误!"<<endl;
	else 
		cout<<"您要查找的元素是:"<<p->date<<endl;
	
}
	
void main()
{
	cout<<"带头结点的单向链表:"<<endl;
    LinkList L;
	int i;
	
    do
	{   
		cout<<"1-建立"<<"      "<<"2-插入"<<"       "<<"3-删除"<<endl<<"4-查找      "<<"5-显示"<<"       "<<"6-退出"<<endl<<"请选择:1/2/3/4/5/6:";
		cin>>i;
		switch(i){
	    case 1: CreatList_L(L);ShowList_L(L);break;
		case 2: ListInsert_L(L);ShowList_L(L);break;
		case 3: ListDelete_L(L);ShowList_L(L);break;
		case 4: LocateList_L(L);break;
		case 5: ShowList_L(L);break;
	    default:break;}
	}
	while(i!=6);
}

⌨️ 快捷键说明

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