删除运算

  1. #include <stdio.h>
  2. #define MAXLEN 100 /*MAXLEN要大于实际线性表的长度*/
  3. typedef int elementtype; /*根据需要,elementtype也可以定义为其它任何类型*/
  4. typedef struct /*定义线性表*/
  5. {
  6. elementtype s[MAXLEN]; /*定义线性表中元素,MAXLEN为线性表的最大容量*/
  7. int len; /*定义线性表的表长*/
  8. }SqList;
  9. int delsqlist(int i,SqList *sql) /*删除顺序表(*sql)的第i个元素*/
  10. {
  11. int j;
  12. if((i<1)||(i>sql->len)) /*i值非法,返回值为0*/
  13. return(0);
  14. else
  15. {
  16. for(j=i+1;j<=sql->len;j++)
  17. sql->s[j-1]=sql->s[j]; /*向前移动数据,覆盖前一数据*/
  18. (sql->len)--; /*表长度减1*/
  19. return(1); /*删除成功,返回值为1*/
  20. }
  21. }
  22. main() /*主程序*/
  23. {
  24. int b=4,c,k;
  25. SqList a={0,1,2,3,4,5,6,7,8}; /*赋线性表各元素初值,为与前概念描述一致,a.s[0]闲置不用*/
  26. a.len=8; /*赋线性表长度值*/
  27. for(k=1;k<=a.len;k++)
  28. {
  29. printf("%3d",a.s[k]); /*输出删除前结果*/
  30. }
  31. printf("\n");
  32. c=delsqlist(b,&a); /*调用删除函数*/
  33. if(c==0)
  34. printf("error\n");
  35. else
  36. {
  37. for(k=1;k<=a.len;k++)
  38. printf("%3d",a.s[k]); /*输出删除后结果*/
  39. }
  40. printf("\n");
  41. }

插入运算

  1. #include <stdio.h>
  2. #define MAXLEN 100 /*MAXLEN要大于实际线性表的长度*/
  3. typedef int elementtype; /*根据需要,elementtype也可以定义为其它任何类型*/
  4. typedef struct /*定义线性表*/
  5. {
  6. elementtype s[MAXLEN]; /*定义线性表中元素,MAXLEN为线性表的最大容量*/
  7. int len; /*定义线性表的表长*/
  8. }SqList;
  9. int insertsqlist(int i,elementtype x,SqList *sql)
  10. { /*在顺序表(*sql)的第i个元素之前插入一个新元素x*/
  11. int j;
  12. if((i<1)||(i>sql->len)) /*i值非法,返回值为0*/
  13. return(0);
  14. else
  15. {
  16. for(j=sql->len;j>=i;j--)
  17. sql->s[j+1]=sql->s[j]; /*向后移动数据,腾出要插入的空位*/
  18. sql->s[j+1]=x; /*修正插入位置为j+1,将新元素插入到s[j+1]位置*/
  19. (sql->len)++; /*表长加1*/
  20. return(1); /*插入成功,返回值为1*/
  21. }
  22. }
  23. main() /*主程序*/
  24. {
  25. int b=3,c,k;
  26. elementtype d=9;
  27. SqList a={0,1,2,3,4,5,6,7,8}; /*赋线性表各元素初值,为与前概念描述一致,a.s[0]闲置不用*/
  28. a.len=8; /*赋线性表长度值*/
  29. for(k=1;k<=a.len;k++)
  30. {
  31. printf("%3d",a.s[k]); /*输出插入前结果*/
  32. }
  33. printf("\n");
  34. c=insertsqlist(b,d,&a); /*调用插入函数*/
  35. if(c==0)
  36. printf("error");
  37. else
  38. {
  39. for(k=1;k<=a.len;k++)
  40. printf("%3d",a.s[k]); /*输出插入后结果*/
  41. }
  42. printf("\n");
  43. }