zoukankan      html  css  js  c++  java
  • 线性表顺序表

    #include <Windows.h>
    
    #define MAXSIZE 100/*定义表的长度,这是顺序表的缺点呀,不过有失必有得*/
    
    #define OK     1
    
    #define ERROR  0
    
    typedef int Status;/*定义我们函数的返回状态*/
    
    typedef int ElemType;/*数据类型*/
    
     
    
    typedef  struct 
    {
    
     ElemType data[MAXSIZE];/*表在这里*/
    
     int length;/*表的长度*/
    
    }LinkList;
    
     
    
    /************************************************************************/
    /*                 获取第N个元素                                        */
    /************************************************************************/
    
    Status GetElem(int N,LinkList L,ElemType  *e)
    {
    
     /*做一件事情前,总得界定范围,不要搞不符合中国国情的事情哦。。。*/
    
     if (L.length<1)
    
      return ERROR;
    
     /*亲,不要跑偏了,只能在这里*/
    
     if (N>L.length || N<1)
    
      return ERROR;
    
     *e=L.data[N-1];
    
     return OK;
    
    }
    /************************************************************************/
    /*                 删除第N个元素                                        */
    /************************************************************************/
    
    Status DeleteElem(int N,LinkList *L,ElemType *e)
    {
    
     //同样的,要符合中国国情
     if (L->length<1)
    
      return ERROR;
     /*亲,还是不要跑偏了,*/
    
     if (N>L->length || N<1)
    
      return ERROR;
    
     /*删了一个元素,你后面的就要补上来,不然我们的表不就跟数组一样了。。。*/
    
     *e=L->data[N-1];/*看看删的是哪位仁兄*/
    
     /*没想到还是要搞特权,如果删除的是最后一位仁兄,他后面没兄弟了,不能补了,特批下吧*/
    
     if (N<=L->length)
     {
      /*移动了一大篇呀,泪奔呀。。。时间复杂度O(n)*/
      for (int i=N-1;i<L->length;i++)
      {
    
       L->data[i]=L->data[i+1];/*吼吼,前面买到火车票了,后面要票的的兄弟跟上*/
    
      }
    
     }
    
     L->length--;/*把你队伍人数减掉一个,不能虚报哟,可是要吃枪子的*/
    
     return OK;
    }
    /************************************************************************/
    /*    插入第N个元素                                           */
    /************************************************************************/
    
    Status InsertElem(int N,LinkList *L,ElemType e)
    {
     /*老话了,符合国情,100年不动摇*/
    
     if (L->length<1)
    
      return ERROR;
    
     if (N>L->length || N<1)
    
      return ERROR;
    
     /*移动元素,最好的办法就是从尾部往后面移动,注意不要越界了哟*/
    
     if (N>=MAXSIZE)
     {
    
      return ERROR;
    
     }
    
     /*插队分为正常排队和非法排队。。。*/
    
     if (N<=L->length)
     {
    
      /*缺陷呀,时间复杂度又是O(n)*/
      for (int i=L->length;i>=N-1;i--)
      {
    
       L->data[i]=L->data[i-1];
    
      }
     }
    
     L->data[N-1]=e;/*终于轮到男猪脚最后一插*/
    
     L->length++;
    
     return OK;
    
    }
    
    int main()
    
    {
    
     /*好吧,初始化列表*/
    
     LinkList L;
    
     L.length=1;
    
     L.data[L.length-1]=0;
    
     
    
     /*先说说顺序表的优势吧。。。*/
    
     /*那就是读取元素,时间复杂度O(1). ps:不懂时间复杂度的编程同学,面壁去。。。*/
     ElemType e;
    
     GetElem(1,L,&e);
    
     printf("length:%d,Elem:%d\n",L.length,e);
     
     /*插入吧*/
     e=23;
    
     InsertElem(1,&L,e);
    
     printf("length:%d,Elem:%d\n",L.length,e);
    
     /*有得必有失,下面我们那删除一个元素看看。。*/
     e=NULL;
    
     DeleteElem(1,&L,&e);
    
     printf("length:%d,Elem:%d\n",L.length,e);
    }
    

      

  • 相关阅读:
    windows 2012 r2怎么进入本地组策略
    ESXI | ESXI6.7如何在网页端添加用户并且赋予不同的权限
    exsi 6.7u2 不能向winows虚拟机发送ctrl+alt+del
    正确安装Windows server 2012 r2的方法
    gitkraken生成ssh keys并连接git
    GitKraken 快速配置 SSH Key
    寒假学习进度六
    寒假学习进度五——活动之间的跳转以及数据的传递
    寒假学习进度四(解决Android studio的com.android.support.v4.view.ViewPager报错问题)
    寒假学习进度三——安卓的一些基本组件
  • 原文地址:https://www.cnblogs.com/273809717/p/2815736.html
Copyright © 2011-2022 走看看