• 单链表————顺序表


    什么是线性表?

    是零个或者多个类型相同元素的又穷序列。

     

    基本运算:

    1. PSeqList createNullList_seq(int m)

    创建并且返回一个空线性表。

    2. int insert_seq( PSeqList palist, int p, DataType x )

    在线性表list中下标为p前插入一个值为x的元素,并返回插入成功与否的标志。

    3. int deleteP (List list, Position p )

    在线性表list中删除下标为p的元素,并返回删除成功与否的标志。

    4. Position locate ( List list, DataType x )

    在线性表list中查找值为x的元素的位置。

    5. int isNull ( List list )

    判别线性表list是否为空表。

     

    结构体定义

    struct SeqList
    {
        int MAXNUM;             //顺序表中最大元素的个数
        int n;                 //存放线性表中元素个数n < MAXNUM
        DataType *element;    //元素
    };
    
    typedef struct SeqList* PSeqList;    //指针类型
    PSeqList palist; 

    建立顺序表

    PSeqList createNullList_seq(int m){
        PSeqList palist =(PSeqList)malloc(sizeof(SeqList));
        if (palist!=NULL)
        {
            palist->element=(DataType*)malloc(m*sizeof(DataType));
            if (palist->element)
            {
                palist->MAXNUM=m;
                palist->n=0;
                return palist;
            }else free palist;
        }
    }

    回收和分配内存

    float *p;
    p = (float*) malloc(m*sizeof(float));
    free(p);

     

    插入操作

    int insert_seq( PSeqList palist, int p, DataType x ){
        int q;
        if(palist->n>=MAXNUM){
            cout<<"溢出"<<endl;
            return 0;
        }
        if (p<0||p>=palist->n)
        {
            cout<<"not exit"<<endl;
            return 0;
        }
        for (q=palist->n-1; q >=p ; q--)
        {
            palist->element[q+1]=palist->element[q];//后移
        }
        palist->element[p]=x;//插入元素
        palist->n=palist->n+1; //元素个数加一
        return 1;
    }

     

    删除操作

    int delete_seq( PSeqList palist, int p ){
        if (p<0||p>palist->n-1)
        {
            cout<<"Not exits"<<endl; //不存在元素
            return 0;
        }
        for (int  q = p; q < palist->n-1; q++)
        {
            //移位,删除位置p的元素
            palist->element[q]=palist->element[q+1];
        }
        palist->n =palist->n-1;//个数减1
        return 1;
    }

    是否为空表

    //判断顺序表是否为空
    int isNullList_seq( PSeqList palist){
        return palist->n==0;
    }

    优缺点:

    顺序存储的优点:不需要附加空间,随机存取任一个元素;

    缺点: 很难估计所需空间的大小,且开始就要分配足够大的一片连续的内存空间.

     

     

     

     

     

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12983677.html

  • 相关阅读:
    常用的adb命令
    Jmeter之计数器
    Jmeter跨线程组传递变量
    Jmeter的属性和变量
    Jmeter之关联——常用提取器
    Jmeter常用的逻辑控制器
    HDU 1262 寻找素数对 模拟题
    HDU 1431 素数回文 离线打表
    HDU 2553 N皇后问题
    HDU 2093 考试排名 模拟题
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12983677.html
Copyright © 2020-2023  润新知