• 单链表操作


    创建,查询,插入,删除。

      1 #include<stdlib.h>
      2 #include<iostream>
      3 using namespace std;
      4 typedef struct LNode{
      5     int data;
      6     struct LNode *next;
      7 }*List;
      8 
      9 void CreatList(List L,int n){//尾插法新建一个单链表 
     10     int v;
     11     List p,e;
     12     L->next=NULL;
     13     e=L;
     14     while(n>0){
     15         p=(LNode*)malloc(sizeof(LNode));
     16         cin>>v;
     17         p->data=v;
     18         p->next=e->next;
     19         e->next=p;
     20         e=e->next;
     21         --n; 
     22     }
     23 }
     24 int GetElem(List L,int n){//读取指定位置的元素 
     25     int *e;
     26     int i=1;
     27     List p;
     28     p=L->next;
     29     while(p!=NULL&&i<n){
     30         p=p->next;
     31         ++i;
     32     }
     33     if(!p||i>n) return 0;
     34     return p->data;
     35 } 
     36 int Insert(List L,int ins,int val){//在指定位置插入元素 
     37     List p,s; int i=0;
     38     p=L;
     39     while(p&&i<ins-1){
     40         p=p->next;
     41         ++i;
     42     }
     43     if(!p||i>ins) return 0;
     44     else{
     45         s=(LNode*)malloc(sizeof(LNode));
     46         s->data=val;
     47         s->next=p->next;
     48         p->next=s;
     49     }
     50     return 1;
     51 }
     52 
     53 int Delete(List L,int del){//删除指定位置的元素 
     54     List p=L;
     55     int i=0;
     56     while(p->next&&i<del-1){
     57         p=p->next;
     58         ++i;
     59     }
     60     //if(!p->next) return 0;
     61         List x;
     62         x=p->next;
     63         p->next=x->next;
     64         free(x);
     65         return 1;
     66 } 
     67 
     68 void Print(List L){//打印单链表 
     69     if(!L) cout<<"ERROR!"<<endl;
     70     else{
     71         List p=L->next;
     72         while(p){
     73             cout<<p->data<<" ";
     74             p=p->next;
     75         }
     76         cout<<endl;
     77     }
     78 } 
     79 
     80 int main(){
     81     int n,v;
     82     cout<<"请输入链表元素个数:";
     83     cin>>n;
     84     List L,s;
     85     //先给头节点一个空间,否则哪里来的链表 
     86     L=(LNode*)malloc(sizeof(LNode));
     87     
     88     //创建单链表 
     89     cout<<"请输入"<<n<<"个元素:"<<endl; 
     90     CreatList(L,n);
     91     /*List p; //头插法创建一个单链表 
     92     L->next=NULL;
     93     for(int i=n;i>0;i--){
     94         p=(LNode*)malloc(sizeof(LNode));
     95         cin>>v;
     96         p->data=v;
     97         p->next=L->next;
     98         L->next=p;
     99     }*/
    100     Print(L);
    101     
    102     //读取单链表中某个值
    103     cout<<"请输入想要读取的位置:";
    104     int x; cin>>x; 
    105     cout<<GetElem(L,x)<<endl;
    106     
    107     //在指定位置插入元素
    108     cout<<"请输入想要插入的元素的位置和值:" ;
    109     int ins,val;
    110     cin>>ins>>val;
    111     Insert(L,ins,val);
    112     Print(L);
    113     
    114     //删除指定位置的元素
    115     cout<<"请输入想要删除的元素的位置:";
    116     int del;cin>>del;
    117     Delete(L,del);
    118     Print(L); 
    119     
    120     return 0;
    121 }
    //循环链表的创建:
    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    typedef struct LNode{
        int data;
        struct LNode *next;
    }*List;

    void Creat(List L,int n){
        List p,rear;
        int v;
        L->next=L;
        rear=L;
        while(n!=0){
            p=(LNode*)malloc(sizeof(LNode));
            cin>>v;
            p->data=v;
            p->next=rear->next;
            rear->next=p;
            rear=p;
            --n;
        }
        cout<<rear->next->next->data<<endl;
    }
    void Print(List L){
        List p=L->next;
        while(p!=L){
            cout<<p->data<<" ";
            p=p->next;
        }
        cout<<" ";
    }

    int main(){//循环链表
        List L;
        L=(LNode*)malloc(sizeof(LNode));
        int n; cin>>n;
        Creat(L,n);
        Print(L);
        return 0;
    }
  • 相关阅读:
    晒一下我的统一网站管理平台
    走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
    XSS跨站脚本实例
    关于开源的一点看法
    晒一下我的监控系统
    走向DBA[MSSQL篇] 详解游标
    【linux+C】新征程 linux下C编程
    走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
    晒一下我的web过滤器
    分享新出炉的微软派工具 你,值得拥有
  • 原文地址:https://www.cnblogs.com/Lynn-2019/p/12155914.html
Copyright © 2020-2023  润新知