zoukankan      html  css  js  c++  java
  • 单链表————顺序表

    什么是线性表?

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

     

    基本运算:

    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

  • 相关阅读:
    LeetCode 226. Invert Binary Tree
    LeetCode 221. Maximal Square
    LeetCode 217. Contains Duplicate
    LeetCode 206. Reverse Linked List
    LeetCode 213. House Robber II
    LeetCode 198. House Robber
    LeetCode 188. Best Time to Buy and Sell Stock IV (stock problem)
    LeetCode 171. Excel Sheet Column Number
    LeetCode 169. Majority Element
    运维工程师常见面试题
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12983677.html
Copyright © 2011-2022 走看看