数据结构-次序表

闲聊 闲聊 1085 人阅读 | 0 人回复

<
文章目次

1、挨次表的观点
        1.挨次存储观点
2、挨次表的完成
        1.静态挨次表的完成
                (1).静态挨次表的观点
                (2). 静态挨次表的构造体界说
                (3).静态挨次表初初化
                (4).静态挨次表获得元素
                (5).静态挨次表的插进操纵
                (6).静态挨次表的删除操纵
                (7).静态挨次表的改动元素操纵
                (8).挨印静态挨次表的元素
                (9).总代码
              (10).征象

        2.静态挨次表的完成
                (1).静态挨次表的观点
                (2).静态挨次表的空间断定
                (3). 静态挨次表的构造体界说
                (4).静态挨次表初初化
                (5).静态挨次表获得元素
                (6).静态挨次表的插进操纵
                (7).静态挨次表的删除操纵
                (8).静态挨次表的改动元素操纵
                (9).挨印静态挨次表的元素
              (10).总代码
              (11).征象
        3.挨次表的劣缺陷
               (1).长处
               (2).缺陷

1、挨次表的观点
1.挨次存储观点
        挨次存储构造,是指用一段地点持续的存储单位顺次存储线性表的数据元素。
2.存储方法
       正在编程言语中,用一维数组去完成挨次存储,正在c言语中,把第一个数据元素存储到下标为0的地位中,把第两个数据元素存储到下标为1的地位中,把第三个数据元素存储到下标为2的地位中,以此类推。
3.少度战容量
       数组的少度指的是数组当前有几个元素,数组的容量指的是最年夜能够大要寄存几个元素。假设数组元素年夜于最年夜能存储。假设数组少度年夜于最年夜能存储的范畴,正在法式上是没有许可的,能够会段毛病,招致法式间接瓦解,完成上需求躲避的。
2、挨次表的完成
1.静态挨次表
(1)静态挨次表观点
        静态挨次挨次表的观点便是,挨次表的数组容量是牢固不变的,当挨次表的数组谦了,便不克不及再存储元素了。
(2)静态挨次表的构造体界说
  1. #define MAXSIZE 20             /*存储空间的初初分派量*/
  2. typedef int ElemType;                   /*ElemType范例按照实践状况而定,那里为int*/
  3. typedef struct sqlist               
  4. {
  5.         ElemType data[MAXSIZE];   /*数组,存储数据元素*/
  6.         int length;                                   /*线性表当前少度*/
  7. }sqlist;
  8. #define OK 1
  9. #define ERROR 0
  10. typedef int Status;  /*Status是函数的范例,其值是函数成果形态代码,如OK等*/
复造代码
        ·(1)数据范例为Elemtype,界说为int;
        ·(2)sqlist界说的便是一个最多寄存MAXSIZE元素的数组,MAXSIZE代表数组容量;
        ·  (3) length代表数组少度,即当前的元素个数;
        · (4) Status代表函数的范例。
(3)静态挨次表初初化
  1. /*函数功用:挨次表初初化*/                           
  2. /*初初前提:无*/
  3. /*操纵成果:无*/
  4. sqlist* listinit()
  5. {
  6.         sqlist *L=(sqlist* )malloc(sizeof(struct sqlist));
  7.         bzero(L->data,MAXSIZE);
  8.         L->length=0;
  9.         return L;
  10. }
复造代码
   留意:此处返回的范例是挨次表构造体指针。
(4)静态挨次表获得元素
  1. /*函数功用:获得元素*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:用e返回L中第i个元素的值,留意i指的是地位,第一个地位的数组是从0开端*/
  4. Status getELem(sqlist* L, int i, ElemType *e)
  5. {
  6.         if(L->length==0 || i<1 || i>L->length)
  7.                 return ERROR;
  8.         *e=L->data[i-1];
  9.        
  10.         return OK;
  11. }
复造代码
            ·(1)L是挨次表的构造体指针;
            ·(2)i是您要得到的第几个元素的地位留意i指的是地位,第一个地位的数组是从0开端;
            ·  (3) e元素指针,将获得的元素赋值给e指背的变量。
(5)静态挨次表的插进操纵
  1. /*函数功用:插进操纵*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:正在L中第i个地位之前插进新的数据元素e,L的少度减1*/
  4. Status ListInsert(sqlist *L, int i, ElemType e)
  5. {
  6.         int k;
  7.         if(L->length==MAXSIZE)             /*挨次表已谦*/
  8.                 return ERROR;
  9.         if(i<1 || i>L->length+1)                   /*当i比第一名置小大概比最初一名后一名置借要年夜的时分*/
  10.         {
  11.                 return ERROR;                                   /*假如插进地位没有正在表尾*/
  12.         }
  13.        
  14.         if(i<=L->length)
  15.         {
  16.                 for(k=L->length-1; k>=i; k--)        /*将要插进地位后的元素,背后移一名*/
  17.                 {
  18.                         L->data[k+1]=L->data[k];    /*将新元素插进*/
  19.                 }
  20.         }
  21.         L->data[i-1]=e;
  22.         L->length++;   
  23.        
  24.         return OK;
  25. }
复造代码
        ·(1)L是挨次表的构造体指针;
       · (2)i是您要插进的地位,那里i的指的地位取上里的一样;
       · (3)e是您要插进的元素
(6)静态挨次表的删除操纵
  1. /*函数功用:删除元素*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:删除L的第i个数据元素,并用e返回其值,L的少度睹加1*/
  4. Status         ListDelete(sqlist *L, int i, ElemType *e)
  5. {
  6.         int k;
  7.         if(L->length==0)                                         /*线性表为空*/
  8.                 return ERROR;                                       
  9.         if(i<1 || i>L->length)                                /*删除地位禁绝确*/
  10.                 return ERROR;
  11.         *e=L->data[i-1];
  12.         if(i<L->length)                                                /*假如删除没有是最初的地位*/
  13.         {
  14.                 for(k=i; k<L->length; k++)                /*将删除地位后继元素前移*/
  15.                 {
  16.                         L->data[k-1]=L->data[k];
  17.                 }
  18.         }
  19.        
  20.         L->length--;
  21.         return OK;
  22. }
复造代码
        ·(1)L是挨次表的构造体指针;
        · (2)i是您要删除的地位,那里i的指的地位取上里的一样;
        ·  (3) e元素指针,将获得的元素赋值给e指背的变量。
(7)静态挨次表的改动元素操纵
  1. //函数功用:改动元素
  2. //初初前提:无
  3. //操纵成果:将间接改动对应元素的值
  4. Status ListChange(sqlist* L, ElemType oldnum, ElemType newnum)
  5. {
  6.         int k=0;
  7.         for(k=0; k<L->length; k++)   //遍历找到要修正的元素oldnum,
  8.         {
  9.                 if(L->data[k]==oldnum)
  10.                 {
  11.                         L->data[k]=newnum;   //将oldnum交换为newnum
  12.                         return OK;
  13.                 }
  14.         }
  15.         return ERROR;
  16. }
复造代码
        ·(1)L是挨次表的构造体指针;
        ·(2)oldnum本来的元素
        ·(3)newnum新的元素
(8)挨印静态挨次表的元素
  1. //此函数只合用于元素范例为int
  2. //函数功用:遍历挨次表
  3. //初初前提:挨次表没有为空;
  4. //操纵成果:挨印出线性表
  5. void listprintf(sqlist *L)
  6. {
  7.         int k=0;
  8.         for(k=0; k<L->length; k++)
  9.         {
  10.                 printf("第%d个元素: %d\n", k, L->data[k]);
  11.         }
  12. }
复造代码
        留意:此函数只合适元素范例为int
     ·(1)L是挨次表的构造体指针;
(9)总代码
  1. #include "stdio.h"#include #include //构造体界说#define MAXSIZE 20             /*存储空间的初初分派量*/
  2. typedef int ElemType;                   /*ElemType范例按照实践状况而定,那里为int*/
  3. typedef struct sqlist               
  4. {
  5.         ElemType data[MAXSIZE];   /*数组,存储数据元素*/
  6.         int length;                                   /*线性表当前少度*/
  7. }sqlist;
  8. #define OK 1
  9. #define ERROR 0
  10. typedef int Status;  /*Status是函数的范例,其值是函数成果形态代码,如OK等*//*函数功用:挨次表初初化*/                           
  11. /*初初前提:无*/
  12. /*操纵成果:无*/
  13. sqlist* listinit()
  14. {
  15.         sqlist *L=(sqlist* )malloc(sizeof(struct sqlist));
  16.         bzero(L->data,MAXSIZE);
  17.         L->length=0;
  18.         return L;
  19. }/*函数功用:获得元素*/
  20. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  21. /*操纵成果:用e返回L中第i个元素的值,留意i指的是地位,第一个地位的数组是从0开端*/
  22. Status getELem(sqlist* L, int i, ElemType *e)
  23. {
  24.         if(L->length==0 || i<1 || i>L->length)
  25.                 return ERROR;
  26.         *e=L->data[i-1];
  27.        
  28.         return OK;
  29. }/*函数功用:插进操纵*/
  30. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  31. /*操纵成果:正在L中第i个地位之前插进新的数据元素e,L的少度减1*/
  32. Status ListInsert(sqlist *L, int i, ElemType e)
  33. {
  34.         int k;
  35.         if(L->length==MAXSIZE)             /*挨次表已谦*/
  36.                 return ERROR;
  37.         if(i<1 || i>L->length+1)                   /*当i比第一名置小大概比最初一名后一名置借要年夜的时分*/
  38.         {
  39.                 return ERROR;                                   /*假如插进地位没有正在表尾*/
  40.         }
  41.        
  42.         if(i<=L->length)
  43.         {
  44.                 for(k=L->length-1; k>=i; k--)        /*将要插进地位后的元素,背后移一名*/
  45.                 {
  46.                         L->data[k+1]=L->data[k];    /*将新元素插进*/
  47.                 }
  48.         }
  49.         L->data[i-1]=e;
  50.         L->length++;   
  51.        
  52.         return OK;
  53. }/*函数功用:删除元素*/
  54. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  55. /*操纵成果:删除L的第i个数据元素,并用e返回其值,L的少度睹加1*/
  56. Status         ListDelete(sqlist *L, int i, ElemType *e)
  57. {
  58.         int k;
  59.         if(L->length==0)                                         /*线性表为空*/
  60.                 return ERROR;                                       
  61.         if(i<1 || i>L->length)                                /*删除地位禁绝确*/
  62.                 return ERROR;
  63.         *e=L->data[i-1];
  64.         if(i<L->length)                                                /*假如删除没有是最初的地位*/
  65.         {
  66.                 for(k=i; k<L->length; k++)                /*将删除地位后继元素前移*/
  67.                 {
  68.                         L->data[k-1]=L->data[k];
  69.                 }
  70.         }
  71.        
  72.         L->length--;
  73.         return OK;
  74. }//函数功用:改动元素
  75. //初初前提:无
  76. //操纵成果:将间接改动对应元素的值
  77. Status ListChange(sqlist* L, ElemType oldnum, ElemType newnum)
  78. {
  79.         int k=0;
  80.         for(k=0; k<L->length; k++)   //遍历找到要修正的元素oldnum,
  81.         {
  82.                 if(L->data[k]==oldnum)
  83.                 {
  84.                         L->data[k]=newnum;   //将oldnum交换为newnum
  85.                         return OK;
  86.                 }
  87.         }
  88.         return ERROR;
  89. } //此函数只合用于元素范例为int
  90. //函数功用:遍历挨次表
  91. //初初前提:挨次表没有为空;
  92. //操纵成果:挨印出线性表
  93. void listprintf(sqlist *L)
  94. {
  95.         int k=0;
  96.         for(k=0; k<L->length; k++)
  97.         {
  98.                 printf("第%d个元素: %d\n", k, L->data[k]);
  99.         }
  100. }int main(){//元素的插进                sqlist* L=listinit();        ListInsert(L, 1, 1);        ListInsert(L, 2, 2);                ListInsert(L, 3, 3);                        listprintf(L);//元素的删除                int e;        e=ListDelete(L, 1, &e);        printf("%d\n", e);        listprintf(L);        //获得元素                getELem(L,1,&e);        printf("%d\n", e);                //改动元素的值        ListChange(L,2,5);        listprintf(L);}
复造代码
(10)征象
  第0个元素: 1
第1个元素: 2
第2个元素: 3
1
第0个元素: 2
第1个元素: 3
2
第0个元素: 5
第1个元素: 3
1.静态挨次表
(1)静态挨次表观点
        静态挨次表的观点便是,挨次表的数组容量没有是牢固不变的,当挨次表的数组谦了,它能够大要本人增长挨次表的容量,不消担忧数组越界的成绩
(2)静态挨次表的构造体界说
  1. //构造体界说
  2. typedef int ElemType;                   /*ElemType范例按照实践状况而定,那里为int*/
  3. typedef struct sqlist               
  4. {
  5.         ElemType *data;           /*界说一个元素指针*/
  6.         int length;                                  /*线性表当前少度*/
  7.         int capacity;             /*挨次表当前容量*/
  8. }sqlist;
  9. #define OK 1
  10. #define ERROR 0
  11. typedef int Status;  /*Status是函数的范例,其值是函数成果形态代码,如OK等*/
复造代码
        ·(1)数据范例为Elemtype,界说为int;
       · (2)data是一个元素指针,用去当数组的尾地点
       · (3) length代表数组少度,即当前的元素个数;
       · (4)capacity是挨次表容量
       · (5)Status代表函数的范例。
(3)静态挨次表初初化
  1. /*函数功用:挨次表初初化*/
  2. /*初初前提:无*/
  3. /*操纵成果:无*/
  4. sqlist* listinit()
  5. {
  6.         sqlist *L=(sqlist* )malloc(sizeof(struct sqlist));   //初初化构造体
  7.         L->capacity=4;                                                                        //存储空间的初初分派量4
  8.         L->data=malloc(sizeof(ElemType)*L->capacity);        //分派数组少度为4
  9.         L->length=0;                                                                                 //数组少度初初化为0
  10.         return L;
  11. }
复造代码
   留意:此处返回的范例是挨次表构造体指针。
(4)静态挨次表的空间断定
  1. //函数功用:判定挨次表空间能否另有空间
  2. //初初前提:无
  3. //操纵成果:
  4. Status listcheck(sqlist* L)
  5. {
  6.         if(L->length>=L->capacity)
  7.         {
  8.                 L->capacity*=2;
  9.                 L->data=realloc(L->data,L->capacity);
  10.                 return ERROR;
  11.         }
  12.         return OK;
  13. }
复造代码
        ·(1)L是挨次表的构造体指针;
(5)静态挨次表获得元素
  1. /*函数功用:获得元素*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:用e返回L中第i个元素的值,留意i指的是地位,第一个地位的数组是从0开端*/
  4. Status getELem(sqlist* L, int i, ElemType *e)
  5. {
  6.         if(L->length==0 || i<1 || i>L->length)
  7.                 return ERROR;
  8.         *e=L->data[i-1];
  9.        
  10.         return OK;
  11. }}
复造代码
            ·(1)L是挨次表的构造体指针;
            ·(2)i是您要得到的第几个元素的地位留意i指的是地位,第一个地位的数组是从0开端;
            ·  (3) e元素指针,将获得的元素赋值给e指背的变量。
(6)静态挨次表的插进操纵
  1. /*函数功用:插进操纵*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:正在L中第i个地位之前插进新的数据元素e,L的少度减1*/
  4. Status ListInsert(sqlist *L, int i, ElemType e)
  5. {
  6.         listcheck(L);                      //查抄挨次表容量能否充足
  7.         int k;
  8.         if(i<1 || i>L->length+1)                   /*当i比第一名置小大概比最初一名后一名置借要年夜的时分*/
  9.         {
  10.                 return ERROR;                                   /*假如插进地位没有正在表尾*/
  11.         }
  12.        
  13.         if(i<=L->length)                  //假如插进的地位是当前少度,跳过那一步
  14.         {
  15.                 for(k=L->length-1; k>=i; k--)        /*将要插进地位后的元素,背后移一名*/
  16.                 {
  17.                         L->data[k+1]=L->data[k];    /*将新元素插进*/
  18.                 }
  19.         }
  20.         L->data[i-1]=e;
  21.         L->length++;   
  22.        
  23.         return OK;
  24. }
复造代码
        ·(1)L是挨次表的构造体指针;
       · (2)i是您要插进的地位,那里i的指的地位取上里的一样;
       · (3)e是您要插进的元素
(7)静态挨次表的删除操纵
  1. /*函数功用:删除元素*/
  2. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  3. /*操纵成果:删除L的第i个数据元素,并用e返回其值,L的少度睹加1*/
  4. Status         ListDelete(sqlist *L, int i, ElemType *e)
  5. {
  6.         int k;
  7.         if(L->length==0)                                         /*线性表为空*/
  8.                 return ERROR;                                       
  9.         if(i<1 || i>L->length)                                /*删除地位禁绝确*/
  10.                 return ERROR;
  11.         *e=L->data[i-1];
  12.         if(i<L->length)                                                /*假如删除没有是最初的地位*/
  13.         {
  14.                 for(k=i; k<L->length; k++)                /*将删除地位后继元素前移*/
  15.                 {
  16.                         L->data[k-1]=L->data[k];
  17.                 }
  18.         }
  19.        
  20.         L->length--;
  21.         return OK;
  22. }
复造代码
        ·(1)L是挨次表的构造体指针;
        · (2)i是您要删除的地位,那里i的指的地位取上里的一样;
        ·  (3) e元素指针,将获得的元素赋值给e指背的变量。
(8)静态挨次表的改动元素操纵
  1. //函数功用:改动元素
  2. //初初前提:无
  3. //操纵成果:将间接改动对应元素的值
  4. Status ListChange(sqlist* L, ElemType oldnum, ElemType newnum)
  5. {
  6.         int k=0;
  7.         for(k=0; k<L->length; k++)   //遍历找到要修正的元素oldnum,
  8.         {
  9.                 if(L->data[k]==oldnum)
  10.                 {
  11.                         L->data[k]=newnum;   //将oldnum交换为newnum
  12.                         return OK;
  13.                 }
  14.         }
  15.         return ERROR;
  16. }
复造代码
        ·(1)L是挨次表的构造体指针;
        ·(2)oldnum本来的元素
        ·(3)newnum新的元素
(9)挨印静态挨次表的元素
  1. //此函数只合用于元素范例为int
  2. //函数功用:遍历挨次表
  3. //初初前提:挨次表没有为空;
  4. //操纵成果:挨印出线性表
  5. void listprintf(sqlist *L)
  6. {
  7.         int k=0;
  8.         for(k=0; k<L->length; k++)
  9.         {
  10.                 printf("第%d个元素: %d\n", k, L->data[k]);
  11.         }
  12. }
复造代码
        留意:此函数只合适元素范例为int
     ·(1)L是挨次表的构造体指针;
(10)总代码
  1. #include "stdio.h"#include #include //构造体界说
  2. typedef int ElemType;                   /*ElemType范例按照实践状况而定,那里为int*/
  3. typedef struct sqlist               
  4. {
  5.         ElemType *data;           /*界说一个元素指针*/
  6.         int length;                                  /*线性表当前少度*/
  7.         int capacity;             /*挨次表当前容量*/
  8. }sqlist;
  9. #define OK 1
  10. #define ERROR 0
  11. typedef int Status;  /*Status是函数的范例,其值是函数成果形态代码,如OK等*///函数功用:判定挨次表空间能否另有空间
  12. //初初前提:无
  13. //操纵成果:
  14. Status listcheck(sqlist* L)
  15. {
  16.         if(L->length>=L->capacity)
  17.         {
  18.                 L->capacity*=2;
  19.                 L->data=realloc(L->data,L->capacity);
  20.                 return ERROR;
  21.         }
  22.         return OK;
  23. }/*函数功用:挨次表初初化*/
  24. /*初初前提:无*/
  25. /*操纵成果:无*/
  26. sqlist* listinit()
  27. {
  28.         sqlist *L=(sqlist* )malloc(sizeof(struct sqlist));   //初初化构造体
  29.         L->capacity=4;                                                                        //存储空间的初初分派量4
  30.         L->data=malloc(sizeof(ElemType)*L->capacity);        //分派数组少度为4
  31.         L->length=0;                                                                                 //数组少度初初化为0
  32.         return L;
  33. }/*函数功用:获得元素*/
  34. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  35. /*操纵成果:用e返回L中第i个元素的值,留意i指的是地位,第一个地位的数组是从0开端*/
  36. Status getELem(sqlist* L, int i, ElemType *e)
  37. {
  38.         if(L->length==0 || i<1 || i>L->length)
  39.                 return ERROR;
  40.         *e=L->data[i-1];
  41.        
  42.         return OK;
  43. }/*函数功用:插进操纵*/
  44. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  45. /*操纵成果:正在L中第i个地位之前插进新的数据元素e,L的少度减1*/
  46. Status ListInsert(sqlist *L, int i, ElemType e)
  47. {
  48.         listcheck(L);                      //查抄挨次表容量能否充足
  49.         int k;
  50.         if(i<1 || i>L->length+1)                   /*当i比第一名置小大概比最初一名后一名置借要年夜的时分*/
  51.         {
  52.                 return ERROR;                                   /*假如插进地位没有正在表尾*/
  53.         }
  54.        
  55.         if(i<=L->length)                  //假如插进的地位是当前少度,跳过那一步
  56.         {
  57.                 for(k=L->length-1; k>=i; k--)        /*将要插进地位后的元素,背后移一名*/
  58.                 {
  59.                         L->data[k+1]=L->data[k];    /*将新元素插进*/
  60.                 }
  61.         }
  62.         L->data[i-1]=e;
  63.         L->length++;   
  64.        
  65.         return OK;
  66. }/*函数功用:删除元素*/
  67. /*初初前提:挨次线性表L已存正在,1<=i<listlength(L)*/
  68. /*操纵成果:删除L的第i个数据元素,并用e返回其值,L的少度睹加1*/
  69. Status         ListDelete(sqlist *L, int i, ElemType *e)
  70. {
  71.         int k;
  72.         if(L->length==0)                                         /*线性表为空*/
  73.                 return ERROR;                                       
  74.         if(i<1 || i>L->length)                                /*删除地位禁绝确*/
  75.                 return ERROR;
  76.         *e=L->data[i-1];
  77.         if(i<L->length)                                                /*假如删除没有是最初的地位*/
  78.         {
  79.                 for(k=i; k<L->length; k++)                /*将删除地位后继元素前移*/
  80.                 {
  81.                         L->data[k-1]=L->data[k];
  82.                 }
  83.         }
  84.        
  85.         L->length--;
  86.         return OK;
  87. }//函数功用:改动元素
  88. //初初前提:无
  89. //操纵成果:将间接改动对应元素的值
  90. Status ListChange(sqlist* L, ElemType oldnum, ElemType newnum)
  91. {
  92.         int k=0;
  93.         for(k=0; k<L->length; k++)   //遍历找到要修正的元素oldnum,
  94.         {
  95.                 if(L->data[k]==oldnum)
  96.                 {
  97.                         L->data[k]=newnum;   //将oldnum交换为newnum
  98.                         return OK;
  99.                 }
  100.         }
  101.         return ERROR;
  102. } //此函数只合用于元素范例为int
  103. //函数功用:遍历挨次表
  104. //初初前提:挨次表没有为空;
  105. //操纵成果:挨印出线性表
  106. void listprintf(sqlist *L)
  107. {
  108.         int k=0;
  109.         for(k=0; k<L->length; k++)
  110.         {
  111.                 printf("第%d个元素: %d\n", k, L->data[k]);
  112.         }
  113. }int main(){//元素的插进                sqlist* L=listinit();        ListInsert(L, 1, 1);        ListInsert(L, 2, 2);                ListInsert(L, 3, 3);        ListInsert(L, 4, 4);        ListInsert(L, 5, 5);                ListInsert(L, 6, 6);                listprintf(L);//元素的删除                int e;        e=ListDelete(L, 1, &e);        printf("%d\n", e);        listprintf(L);        //获得元素                getELem(L,1,&e);        printf("%d\n", e);                //改动元素的值        ListChange(L,2,5);        listprintf(L);}
复造代码
(11)征象
  第0个元素: 1
第1个元素: 2
第2个元素: 3
第3个元素: 4
第4个元素: 5
第5个元素: 6
1
第0个元素: 2
第1个元素: 3
第2个元素: 4
第3个元素: 5
第4个元素: 6
2
第0个元素: 5
第1个元素: 3
第2个元素: 4
第3个元素: 5
第4个元素: 6
 3.挨次表的劣缺陷
(1)长处
        ·不必为暗示表中元素之间的逻辑干系两而增长分外的存储空间
       ·能够疾速天获得表中任一名置的元素
(2)缺陷
       · 插进战删除操纵需求挪动大批元素
       ·当线性表少度变革较年夜时,易以肯定存储空间的容量,静态挨次表能够招致容量不敷,静态挨次表能够招致存储空间的华侈
       

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请发帖留言提供原创证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则