加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

线性表

发布时间:2020-12-16 07:48:44 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includestdio.h #includemalloc.h #define M 10000 typedef struct Xian { int *ap;//数据段 int length;//表的长度 }jie; void Initialization(jie*

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    #include<stdio.h>  
    #include<malloc.h>  
    #define M 10000  
    typedef struct Xian  
    {  
        int *ap;//数据段  
        int length;//表的长度  
    }jie;  
    void Initialization(jie* p)//初始化表   
    {  
        p->ap=new int[M];  
        //p->ap=(int *)malloc(sizeof(int)*M);  
        p->length=0;  
    }  
    bool Empty(jie* p)//判断表空  
    {  
        if(p->length==0)  
            return true;  
        return false;  
    }  
    bool Full(jie* p)   //判断表是否已满  
    {  
        if(p->length==M-1)  
            return true;  
        return false;  
    }  
    void Add(jie* p)   //添加  
    {  
        if(Full(p))  
        {  
            printf("内存已满n");  
            return;  
        }  
        int a;  
        scanf("%d",&a);  
        p->ap[p->length]=a;  
        p->length++;  
    }  
    void Insert(jie* p,int index,int e)  //插入  
    {  
        if(Full(p))  
        {  
            printf("内存已满n");  
            return;  
        }  
        if(index>p->length)  
        {  
            p->ap[p->length]=e;  
            p->length++;  
            return;  
        }  
        else  
        {  
            for(int i=p->length-1;i>index;--i)  
                p->ap[i+1]=p->ap[i];  
            p->ap[index-1]=e;  
            p->length++;  
            return ;  
        }  
    }  
    void Delet(jie* p,int index) // 删除  
    {  
        if(index>p->length||index<1)  
            return;  
        else  
        {  
            for(int i=index-1;i<p->length;++i)  
                p->ap[i]=p->ap[i+1];  
            p->length--;  
        }  
    }  
    int *Search(jie* p,int index)//查找  
    {  
        if(index<1||index>p->length)  
            return NULL;  
        else  
        {  
            for(int i=0;i<p->length;++i)  
            {  
                if(i==index-1)  
                    return &p->ap[index-1];  
            }  
        }  
    }  
    void PutAll(jie* p)   //输出所有数据  
    {  
        for(int i=0;i<p->length;++i)  
            printf("%dn",p->ap[i]);  
    }  
    void Destroy(jie* p)//摧毁线性表  
    {  
        p->length=0;  
        delete p->ap;  
        //free(p->ap);  
    }  
    int main()  
    {  
        jie* pos;  
        pos=new jie;    //为指针分配内存  
        Initialization(pos);  
        Add(pos);  
        Add(pos);  
        Add(pos);  
        Insert(pos,2,9);  
        Delet(pos,4);  
        PutAll(pos);  
        return 0;  
    }  

    #include<iostream>  
    int main(){  
        int i=5;  
        int &j=i; //为i取了一个别名j,相当于i和j是指的同一个变量;  
        i=7;  
        cout<<"i="<<i<<" j="<<j;  
    }  


输出结果是了两个7;因为变量j只是i的一个别名;只要i、j只要一个变化另一个自然也变了;
    #include<stdio.h>  
    #include<malloc.h>  
    #define M 10000  
    typedef struct Xian  
    {  
        int *ap;//数据段  
        int length;//表的长度  
    }jie;  
    void Initialization(jie &p)//初始化表   
    {  
        p.ap=new int[M];  
        //p->ap=(int *)malloc(sizeof(int)*M);  
        p.length=0;  
    }  
    bool Empty(jie &p)//判断表空  
    {  
        if(p.length==0)  
            return true;  
        return false;  
    }  
    bool Full(jie &p)   //判断表是否已满  
    {  
        if(p.length==M-1)  
            return true;  
        return false;  
    }  
    void Add(jie &p)   //添加  
    {  
        if(Full(p))  
        {  
            printf("内存已满n");  
            return;  
        }  
        int a;  
        scanf("%d",&a);  
        p.ap[p.length]=a;  
        p.length++;  
    }  
    void Insert(jie &p,int e)  //插入  
    {  
        if(Full(p))  
        {  
            printf("内存已满n");  
            return;  
        }  
        if(index>p.length)  
        {  
            p.ap[p.length]=e;  
            p.length++;  
            return;  
        }  
        else  
        {  
            for(int i=p.length-1;i>index;--i)  
                p.ap[i+1]=p.ap[i];  
            p.ap[index-1]=e;  
            p.length++;  
            return ;  
        }  
    }  
    void Delet(jie &p,int index) // 删除  
    {  
        if(index>p.length||index<1)  
            return;  
        else  
        {  
            for(int i=index-1;i<p.length;++i)  
                p.ap[i]=p.ap[i+1];  
            p.length--;  
        }  
    }  
    int *Search(jie &p,int index)//查找  
    {  
        if(index<1||index>p.length)  
            return NULL;  
        else  
        {  
            for(int i=0;i<p.length;++i)  
            {  
                if(i==index-1)  
                    return &p.ap[index-1];  
            }  
        }  
    }  
    void PutAll(jie &p)   //输出所有数据  
    {  
        for(int i=0;i<p.length;++i)  
            printf("%dn",p.ap[i]);  
    }  
    void Destroy(jie &p)//摧毁线性表  
    {  
        p.length=0;  
        delete p.ap;  
        //free(p->ap);  
    }  
    int main()  
    {  
        jie pos;  
        Initialization(pos);  
        Add(pos);  
        Add(pos);  
        Add(pos);  
        Insert(pos,4);  
        PutAll(pos);  
        return 0;  
    }  

用引用便于移植,比如java等没有指针这个概念的,就用引用来写;

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读