zoukankan      html  css  js  c++  java
  • c语言描述简单的线性表,获取元素,删除元素,

     1 //定义线性表
     2 #define MAXSIZE 20
     3 typedef int ElemType;
     4 typedef  struct 
     5 {
     6         ElemType data[MAXSIZE];  //这是数组的长度,从0开始,也就是最大长度 
     7         int length;              //这是线性表的长度,表示线性表已经存储了多少个元素 
     8          
     9 }SqList;
    10 /*
    11 ************************** 
    12 **************************
    13 */
    14 
    15 
    16 
    17 //返回线性表L的元素  
    18 typedef int Status;
    19 Status GetElem1 (SqList L,int i,ElemType *e)
    20 {
    21      if (L.length==0 || i<i || i>L.length) 
    22                      return -1;   
    23                      
    24          *e = L.data[i-1];
    25          return 0; 
    26 }
    27 
    28 
    29 
    30 
    31       
    32 /*
    33 ************************** 
    34 **************************
    35 */     
    36 
    37 
    38 //元素插入线性表
    39 Status ListInsert (SqList *L,int i,ElemType e)
    40 {
    41      int k;
    42      if (L->length == MAXSIZE)    //表示线性表的最大长度已经等于数组的长度,线性表已经满 
    43           return -1;      
    44           
    45      if(i < 1 || i > L->length+1)    //表示要插入的位置i 不在线性表的范围
    46          return -1;
    47     
    48      if (i <= L->length)      //若要插入的位置不在线性表的尾端 
    49         for (k = L->length - 1;k >= i-1 ;k--)     //就是插入位置后面的元素一个个往后面挪出一个位置,先是线性表最后一个元素挪 
    50                L->data[k+1] = L->data[k];
    51                
    52      L->data[i-1] = e; // 插入的i是相对于线性表来说的下标从1开始,data是数组,下标从0开始,所以辅助到i-1上  
    53      L->length++;    //表示线性表的长度加上1 
    54      return 0; 
    55 }      
    56 
    57 
    58 /*
    59 ************************** 
    60 **************************
    61 */
    62 
    63 //元素删除 
    64 Status ListDelete(SqList *L,int i,ElemType *e)
    65 {
    66       int k;
    67       if (L->length ==0)    //判断线性表是否为空 
    68         return -1;
    69       if (i>L->length || i<1)   //判断要删除的元素是否在线性表中 
    70         return -1;
    71       *e = L->data [i-1];    //先把数组的数组拿出来赋值给e 
    72       
    73       if (i< L->length) 
    74             for (k=i;k<L->length;k++)   //直接把药删除的元素后面的元素直接往前移动 
    75                L->data[k-1]=L->data[k];   
    76     
    77          L ->length --;      //最后一步是把线性表的长度减去1 数组的长度不用减,英文已经用maxsize定义了。 
    78     
    79  } 
    80  
    81  
    82  int main()
    83  {
    84      return 0;
    85  }
    86       
    87        

       简单的线性表增删,本人是菜鸟,有什么问题请评论,我真的希望大家能给点指点,谁也是从菜鸟开始的,

       做技术的没有什么好嘲笑的,技术的东西是永远学不完的,日新月异。

       技术靠一点一点积累的,大牛也是這样,

       希望我也能加油。

    博客园的文章都是大学时写的,质量不太好。 我的新文章都会发布再新的 blog :https://blog.biyongyao.com 请大家关注哟!!
  • 相关阅读:
    使用OCR来帮助LR实现认证码识别
    Oracle的AWR报告分析
    oracle创建表空间
    Bug管理工具之Mantis_配置篇
    Selenium学习笔记之外部化相关测试数据---xml
    性能测试学习之二 ——性能测试模型(PV计算模型)
    性能测试学习之三—— PV->TPS转换模型&TPS波动模型
    性能测试学习之一 ——性能测试指标
    性能测试之吞吐量
    记录几个 Android x86 系统的官网
  • 原文地址:https://www.cnblogs.com/biyongyao/p/5449813.html
Copyright © 2011-2022 走看看