Advertisement
MaskerQwQ

plz

Oct 31st, 2022
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. //typedef struct LinkNode{
  6. //  ElemType data;          //节点中存放的数值类型
  7. //  struct LinkNode *next;  //节点中存放的下一节点的指针
  8. //}LinkList,LinkNode;
  9.  
  10. typedef struct LinkNode{
  11.     int data;
  12.     struct LinkNode *next;
  13. }LinkNode,*LinkList;
  14.  
  15. //初始化
  16. bool InitList(LinkList &L){
  17.     L=(LinkList)malloc(sizeof(LinkNode));
  18.     L->next=NULL;
  19.     L->data=-1;
  20.     return true;
  21. }
  22.  
  23. //头插入
  24. bool ListInsert_F(LinkList &L,int fv){
  25.     LinkNode *s;
  26.     s=(LinkNode*)malloc(sizeof(LinkNode));
  27.     s->data=fv;
  28.     s->next=L->next;
  29.     L->next=s;
  30.     return true;
  31. }
  32.  
  33. //尾插入
  34. bool ListInsert_B(LinkList &L,LinkNode *node){
  35.     LinkNode *last=NULL;
  36.     if(!L||!node){
  37.         return false;
  38.     }
  39.     last=L;
  40.     while(last->next){
  41.         last=last->next;
  42.     }
  43.     node->next=NULL;
  44.     last->next=node;
  45.     return true;
  46. }
  47.  
  48. //指定位置插入
  49. bool ListInsert(LinkList &L,int i,int &e){
  50.     if(!L){
  51.         return false;
  52.     }
  53.     int j=0;
  54.     LinkList p,s;
  55.     p=L;
  56.     while(p&&j<i-1){
  57.         p = p->next;
  58.         j++;
  59.     }
  60.     if(!p||j>i-1){
  61.         return false;
  62.     }
  63.     s=new LinkNode;
  64.     s->data=e;
  65.     s->next=p->next;
  66.     p->next=s;
  67.     return true;
  68. }
  69.  
  70. //删除
  71. bool ListDelete(LinkList &L,int i){
  72.     LinkList p,q;
  73.     int index=0;
  74.     p=L;
  75.     if(!L||!L->next){
  76.         return false;
  77.     }
  78.     while(p->next&&index<i-1){
  79.         p=p->next;
  80.         index++;
  81.     }
  82.     if(!p->next||index>i-1){
  83.         return false;
  84.     }
  85.     q=p->next;
  86.     p->next=q->next;
  87.     delete q;
  88.     return true;
  89. }
  90.  
  91. //查找
  92. LinkNode *LocateElem(LinkList L,int e){
  93.     LinkNode *p=L->next;
  94.     while(p&&p->data!=e){
  95.         p=p->next;
  96.     }
  97.     return p;
  98. }
  99.  
  100. //输出
  101. bool ListOutput(LinkList &L){
  102.     LinkNode *p=L;
  103.     cout<<"当前单链表为:";
  104.     while(p->next){
  105.         cout<<p->data<<" "<<endl;
  106.         p=p->next;
  107.     }
  108.     return true;
  109. }
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. //求表长
  121. int ListLength(LinkList L){
  122.     int length=0;
  123.     LinkNode *p=L;
  124.     if(L==NULL){
  125.         return 0;
  126.     }
  127.     while(p->next!=NULL){
  128.         p=p->next;
  129.         length++;
  130.     }
  131.     cout<<"当前表长度为:"<<length<<endl;
  132.     return length;
  133. }
  134. //销毁
  135. void ListDestory(LinkList &L){
  136.     LinkList p=L;
  137.     while(p){
  138.         L=L->next;
  139.         delete p;
  140.         p=L;
  141.     }
  142. }
  143.  
  144. int main(){
  145.     LinkList List;
  146.     cout<<"1.创建空表"<<endl;
  147.     cout<<"2.头插法"<<endl;
  148.     cout<<"3.尾插法"<<endl;
  149.     cout<<"4.插入新元素(在第i位插入)"<<endl;
  150.     cout<<"5.删除元素(位置删除)"<<endl;
  151.     cout<<"6.删除元素(值删除)"<<endl;
  152.     cout<<"7.输出当前链表"<<endl;
  153.     cout<<"8.求前驱"<<endl;
  154.     cout<<"9.求后继"<<endl;
  155.     cout<<"10.销毁链表"<<endl;
  156.     cout<<"11.置空表"<<endl;
  157.     cout<<"12.求表长"<<endl;
  158.     cout<<"13.获取结点数值"<<endl;
  159.     cout<<"14.搜索结点"<<endl;
  160.     cout<<"15.退出"<<endl;
  161.     cout<<"请输入将要进行的操作编号:"<<endl;
  162.     int option;
  163.     cin>>option;
  164.     while(option!=15){
  165.         switch(option){
  166.             case 1:
  167.                 InitList(List);
  168.                 break;
  169.             case 2:
  170.                 int f;
  171.                 cout<<"请输入你要插入的值:";
  172.                 cin>>f;
  173.                 ListInsert_F(List,f);
  174.                 ListOutput(List);
  175.                 break;
  176.             case 3:
  177.             break;
  178.             case 4:
  179.             break;
  180.             case 5:
  181.             break;
  182.             case 6:
  183.             break;
  184.             case 7:
  185.             break;
  186.             case 8:
  187.             break;
  188.             case 9:
  189.             break;
  190.             case 10:
  191.             break;
  192.             case 11:
  193.             break;
  194.             case 12:
  195.             break;
  196.             case 13:
  197.             break;
  198.             case 14:
  199.             break;
  200.         }
  201.         cin>>option;
  202.     }
  203.    
  204.    
  205.    
  206.    
  207.     return 0;
  208. }
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement