zoukankan      html  css  js  c++  java
  • 数据结构与算法2——线性顺序存储

      线性表顺序结构,非链式:

                 包含两个部分:

              1.数组内存放的是要存储的数据,同时给出最大容量

                                       2.最后一个数据的下标,由此可知实际存储的数据总数。

    结构体描述:

    typedef struct()
        {
          double data[max];//最多能存储的总数,表的最大容量
          int last;//last 是实际存储数据的最后一个的下标;  
        }List;
    
    List *Ptrl;
    Ptrl->last+1 是存储的数据总数,即表的实际长度

     

        数据表效果如图,要注意第几个数与下标之间的+1关系,避免代码出错:

           

        建立空表函数,注意申请内存需要强制转换,否则是空指针的结构

    List *Makeempty()
    {
        List *Ptrl;
        Ptrl=(List *)malloc(sizeof(List));
        Ptrl->last=-1;//空表
        return Ptrl;        
    
    }

        查找数据函数

    int find(double x,List *Ptrl)
    {  int i=0;
       while(Ptrl->data[i]!=x && i<=Ptrl->last)
          i++;
       if(i>Ptrl->last) return -1;
       else return i;
    }

        

        插入函数,插入第i(1<=i<=last+2)个数据,即可以在下标0--last+1的位置上插入:

    void add(double x,int i, List *Ptrl)
    {  
        int j;
        if(Ptrl->last==max-1) {printf("full"); return;}//表内已经有max个数据
        if(i<1 || i>Ptrl->last+2) {printf("error"); return;}//只能插入第1个数到last+2个数
        for(j=Ptrl->last; j>=i-1; j--)
           Ptrl->data[j+1]=Ptrl->last[j];
           ptrl->data[i-1]=x;
           Ptrl->last++;//存储实际数据个数加1,下标加1,注意更新数据总数
         return;
    }            

             

        删除函数,删除第i个(1<=i<=last+1)数据,即可以删下标0-last的数据

    void delete(int i,List *Ptrl)
    {    int j;
            if(Ptrl->last==-1) {printf("empty"); return;}
             if(i<1||i>Ptrl->last+1) {printf("error"); return;}
        for(j=i-1;j<Ptrl->last;j++)
            Ptrl->data[j]=Ptrl->data[j+1];
        Ptrl->last--;//实际存储数据个数-1,下标-1,注意更新数据总数
        return;
    }
  • 相关阅读:
    Android:TabWidget
    Android之GridView
    Asp.Net页面生命周期
    Android笔记
    Adnroid单元测试
    GridView,ListView实例
    CSS
    C# ref,out
    有些经验是花钱都买不到的!
    数据库常用的sql语句
  • 原文地址:https://www.cnblogs.com/guoshiyv/p/7045915.html
Copyright © 2011-2022 走看看