zoukankan      html  css  js  c++  java
  • 线性表顺序存储结构和链式存储结构

    #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); }
    
    
    


  • 相关阅读:
    db2循环
    db2 游标使用
    db2 import export load
    DB2常用命令
    多级目录删除父节点,验证子节点是否真正删除
    app接口测试总结
    ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者
    Fiddler-1 官网下载及安装
    python 笔记1:官网下载及安装python;eclipse中安装配置pydev
    Jmeter入门8 连接microsoft sql server数据库取数据
  • 原文地址:https://www.cnblogs.com/BananaMan/p/11443910.html
Copyright © 2011-2022 走看看