• 线性表顺序存储结构和链式存储结构


    #include <stdio.h>
    #include <iostream>
    #include <malloc.h>
    #define Max 10
    using namespace std;
    typedef struct{
        char data[Max];
        int length;
    }sqlist;
    
    void initlist(sqlist *&l)   //线性表初始化*&代表可以对l的地址改变 
    {
        l=(sqlist *)malloc(sizeof(sqlist));
        l->length=0;
    } 
    
    void easyinsert(sqlist *l)
    {
        char c=getchar();
        if(l->length>Max)
        {
            return ;
        }
    
        l->data[l->length++]=c;
    }
    
    void display(sqlist l)
    {
        for(int i=0;i<l.length;i++)
        {
            cout<<l.data[i];
        }
        cout<<endl;
    }
    int leng(sqlist l)
    {
        cout<<l.length<<endl;
        return l.length;
    }
    void getelem(sqlist l,int n)
    {
        if(n<1||n>l.length)
        {
            return ;
        }
        char e;
        e=l.data[n-1];
        cout<<e<<endl;
    }
    void weizhi(sqlist l,char c)
    {
        for(int i=0;i<l.length;i++)
        {
            if(c==l.data[i])
            {
                cout<<i+1<<"
    ";
            }
        }
    }
    void charu(sqlist *l,char c,int n)
    {
        if(n<1||n>l->length)
        {
            return ;
        }
        l->length++;
        int i;
        for(i=l->length;i>n;i--)
        {
            l->data[i-1]=l->data[i-2];
        }
        l->data[i-1]=c;
        
    }
    void shanchu(sqlist *l,int i)
    {
        if(i<1||i>l->length)
        {
            return ;
        }
        l->length--;
        for(int j=i-1;j<l->length;j++)
        {
            l->data[j]=l->data[j+1];
        }
    }
    
    int main()
    {
        sqlist *l;
        initlist(l);
        easyinsert(l);
        easyinsert(l);
        easyinsert(l);
        easyinsert(l);
        easyinsert(l);
        display(*l);
        leng(*l);
        getelem(*l,4);
        weizhi(*l,'c');
        charu(l,'g',5);
        display(*l);
        shanchu(l,3);
        display(*l);
    }

    初始化必须用*&l,其余如果对于线性表有改变则调用指针

    原因:https://www.cnblogs.com/xiang-little/p/5840809.html

    void initlist(sqlist *&l)   //线性表初始化*&代表可以对l的地址改变 
    {
        l=(sqlist *)malloc(sizeof(sqlist));
        l->length=0;
    } 


    链式存储结构:
    union的知识点,慕课数据结构 第二讲2.1第六个视频




    链式结构基础(建立两个链表,连接)
    这样//的部分需要注意,别的很简单。
    #include <stdio.h>
    #include <iostream>
    #include <malloc.h>
    #define Max 10
    using namespace std;
    typedef struct node{
        int data;
        struct node *next;  //因为此处要使用自己所以
        //第一行一定要加上node这个名字; 
    }node;//这里也可以写成node,*linklist这样的话
    //node *==linklist; 
    
    void creat(node *&l,int m)
    {
        l=new node;       //依然很重要分配空间也可malloc
                //l=(node *)malloc(sizeof(node))
    l->next=NULL; node *r; r=l; for(int i=0;i<m;i++) { node *p; p=new node; ///这一行很重要一定要有 cin>>p->data; p->next=NULL; r->next=p; r=p; } } void display(node *l) { node *p; // p->next=NULL; p=l->next; while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl; } void lianjie(node *l,node *m,node *n) { node *p; p=new node; p=m->next; node *q; q=new node; q=l->next; node *r; r=new node; r=n; while(p) { r->next=p; r=r->next; p=p->next; } while(q) { r->next=q; r=r->next; q=q->next; } } int main() { int n; cin>>n; node *l1; creat(l1,n); display(l1); int m; cin>>m; node *l2; creat(l2,m); display(l2); node *l3; creat(l3,0); lianjie(l1,l2,l3); display(l3); }
    
    
    


  • 相关阅读:
    大数据集群环境ssh免密码登录设置
    FreeRTOS任务创建删除
    BLE外设设计
    BLE控制器之链路层
    BLE控制器之链路层二
    BLE控制器之物理层特性
    BLE基本理论和概念
    BLE主机之ATT和GATT
    BLE主机之SM层
    BLE主机之L2CAP层
  • 原文地址:https://www.cnblogs.com/BananaMan/p/11443910.html
Copyright © 2020-2023  润新知