ZIP数据结构-单链表的操作 65.04KB

2301_78232171需要积分:5(1积分=1元)

资源文件列表:

链表.zip 大约有13个文件
  1. 链表/bin/
  2. 链表/bin/Debug/
  3. 链表/bin/Debug/LNode.exe 107.63KB
  4. 链表/LNode.cbp 1.15KB
  5. 链表/LNode.cpp 8.75KB
  6. 链表/LNode.depend 429B
  7. 链表/LNode.h 1.08KB
  8. 链表/LNode.layout 1.07KB
  9. 链表/main.cpp 313B
  10. 链表/obj/
  11. 链表/obj/Debug/
  12. 链表/obj/Debug/LNode.o 39.13KB
  13. 链表/obj/Debug/main.o 24.07KB

资源介绍:

数据结构-单链表的操作
#include<iostream> #include"LNode.h" #define OK 1 #define OVERFLOW -2 #define ERROR 0 using namespace std; //初始化单链表 Status InitList(LinkList &L){ L=new LNode; if(!L)exit(OVERFLOW); L->next=NULL; return OK; } //销毁单链表 Status DestroyList(LinkList &L){ LinkList p; while(L){ p=L; L=L->next; delete p; } return OK; } //创建单链表——后插法 void CreatList_R(LinkList &L,LinkList p,int n){ L=new LNode; L->next=NULL; LinkList r; r=L; for(int i=0;i<n;i++){ p=new LNode; cin>>p->data; p->next=NULL; r->next=p; r=p; } } //清空单链表 Status ClearList(LinkList L){ LinkList p,q; p=L->next; while(p){ q=p->next; delete p; p=q; } L->next=NULL; return 0; } //求单链表的长度 Status ListLength(LinkList L){ LinkList p=L->next; int acount=0; while(p){ ++acount; p=p->next; } return acount; } //判断单链表是否为空 bool ListEmpty(LinkList L){ return L->next!=NULL; } //单链表的按位置查找 Status LinkList_id(LinkList L,int num){ int len=ListLength(L); if(num<1||num>len){ cout<<"查找位置不合法!"<<endl; } LinkList p=L->next; for(int i=1;i<num;i++){ p=p->next; } int res=p->data; return res; } //求前驱 Status PriorElem(LinkList L,int num){ int len=ListLength(L); if(num-1<1||num>len){ cout<<"查找位置不合法!"<<endl; } LinkList p=L; for(int i=1;i<num;i++){ p=p->next; } int res=p->data; return res; } //求后继 Status NextElem(LinkList L,int num){ int len=ListLength(L); if(num+1<1||num>len){ cout<<"查找位置不合法!"<<endl; } LinkList p=L->next->next; for(int i=1;i<num;i++){ p=p->next; } int res=p->data; return res; } //单链表的按值查找 Status LocateElem_L(LinkList L,ElemType e){ LNode *p=L; int len=0; while(p&&(p->data!=e)) { p=p->next; len++; } if(len<=ListLength(L)) return p->data; else return ListLength(L)+1; } //在单链表的第i个位置插入一个元素 Status LinkListInsert(LinkList L,int i,ElemType e){ LinkList p=L;int j=0;LNode* s; while(p&&j<i-1){ p=p->next; ++j; } if(!p||j>i-1)return ERROR; s=new LNode; s->data=e; s->next=p->next; p->next=s; return OK; } //将单链表中第i个数据元素删除 Status ListLinkDelete(LinkList L,int i/*,ElemType &e*/){ LinkList p=L;int j=0;LNode* r; while(p->next&&j<i-1){ p=p->next; ++j; } if(!(p->next)||j>i-1)return ERROR; r=p->next; p->next=r->next; //e=r->data; delete r; return OK; } //遍历输出单链表 void PrintList(LinkList L){ LinkList p=L->next; if(ListLength(L)>0){ cout<<"当前单链表的所有元素为:"<<endl; while(p){ cout<<p->data<<" "; p=p->next; } cout<<endl; } else cout<<"当前单链表已为空!"<<endl; } //显示选择功能 void Print(){ cout<<"####################欢迎来到单链表的世界!#####################"<<endl; cout<<"#-------------------0 -------退出程序-------------------------#"<<endl; cout<<"#-------------------1 -------初始化一个单链表-----------------#"<<endl; cout<<"#-------------------2 -------单链表表中添加元素(后插法):----#"<<endl; cout<<"#-------------------3 -------销毁单链表:----------------------#"<<endl; cout<<"#-------------------4 -------清空单链表:----------------------#"<<endl; cout<<"#-------------------5 -------判断单链表是否为空:--------------#"<<endl; cout<<"#-------------------6 -------求单链表的长度:------------------#"<<endl; cout<<"#-------------------7 -------获取单链表指定位置的元素:--------#"<<endl; cout<<"#-------------------8 -------在单链表中查找值为e的元素:-------#"<<endl; cout<<"#-------------------9 -------求前驱:------------------------- #"<<endl; cout<<"#-------------------10 ------求后继---------------------------#"<<endl; cout<<"#-------------------11-------在单链表的指定位置插入元素-------#"<<endl; cout<<"#-------------------12-------删除单链表指定位置的元素:--------#"<<endl; cout<<"#-------------------13-------输出当前单链表:------------------#"<<endl; cout<<"请选择要执行的功能:"<<endl; } //选择功能 Status Menu(LinkList L){ int num; cin>>num; int count=0; while(num) { switch(num) { case 0: num=0; break; case 1: InitList(L); count++; cout<<"单链表初始化完成!"<<endl; break; case 2: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } int n; cout<<"请输入插入个数:"; cin>>n; LinkList p; cout<<"请插表:"; CreatList_R(L,p,n); cout<<"单链表创建完成!"<<endl; break; case 3: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } DestroyList(L); count--; cout<<"单链表已销毁!"<<endl; break; case 4: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } ClearList(L); cout<<"单链表已清空!"<<endl; break; case 5: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } else if(ListEmpty(L)) cout<<"单链表不为空!"<<endl; else cout<<"单链表为空!"<<endl; break; case 6: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"单链表的长度为:"<<ListLength(L)<<endl; break; case 7: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"请输入要查找的元素的位置:"; int num; cin>>num; if(num<1||num>ListLength(L)){cout<<"查找位置不合法"<<endl;break;} else cout<<"第"<<num<<"位的元素为"<<LinkList_id(L,num)<<endl; break; case 8: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"请输入要查找的元素:"; int index; cin>>index; if(LocateElem_L(L,index)>ListLength(L)){ cout<<"该元素在单链表中不存在!"<<endl; }else cout<<"元素"<<index<<"在单链表中存在,取值为:"<<LocateElem_L(L,index)<<endl; break; case 9: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"请输入要查找的元素的序号:"; int x; cin>>x; if(x<=1||x>ListLength(L)){cout<<"查找位置不合法"<<endl;break;}else cout<<x<<"号元素"<<"的直接前驱为:"<<PriorElem(L,x)<<endl; break; case 10: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"请输入要查找的元素的序号:"; int s; cin>>s; if(s<1||s>=ListLength(L)){cout<<"查找位置不合法"<<endl;break;}else cout<<s<<"号元素"<<"的直接后继为:"<<NextElem(L,s)<<endl; break; case 11: if(count==0){ cout<<"请初始化一个单链表"<<endl; break; } cout<<"请输入�
100+评论
captcha
    类型标题大小时间
    ZIPReact 框架的无代码/低代码开发工具,可视化生成网站和应用程序66.13MB10月前
    ZIP维兹曼数据集,包含数据集与真实分割结果85.44MB10月前
    ZIP图像分割常用合成图像,包含FCM源代码222.39KB10月前
    ZIPopen SSL 1.1.1稳定版本11.37MB10月前
    ZIP购物网站毕设(源码+视频)84.47MB10月前
    ZIPopenssl较靠前的版本,规避编译错误6.49MB10月前
    ZIPeterm_v3.9_xfdown.com.zip34.14MB10月前
    ZIPUserLibrary-Res-0805.zip370.33KB10月前