当前位置:   article > 正文

顺序表中的基本操作(详细代码图解+注释+算法步骤)_顺序表的基本操作代码

顺序表的基本操作代码

目录

 线性表中的顺序表基本操作的函数名类型定义:

1.创建一个长度为n的顺序表L:

        创建一个长度为n顺序表L的核心代码块:

        创建一个长度为n顺序表的完整代码如下:

        运行结果:

2.顺序表L的插入:

        顺序表L的插入的核心代码:

        顺序表L的插入的完整代码如下:

        运行结果:

3.顺序表L的删除:

        顺序表L的删除的核心代码:

        顺序表L的删除的完整代码实现如下:

        运行结果:

4.顺序表L的查找:

        顺序表的查找(按值查找) 核心代码:

        顺序表的查找(按值查找) 完整代码如下: 

        运行结果:

        顺序表的查找(按位置查找) 核心代码:

         顺序表的查找(按位置查找) 完整代码如下: 

        运行结果:

5.顺序表L的倒置:

        顺序表L的倒置的核心代码:

        顺序表L的倒置的完整代码如下:

        运行结果:


 下面是线性表中的顺序表基本操作的函数名类型定义:


  • CreateList(SqList &L,int n) :创建长度为n的顺序表L—— 时间复杂度:O(n)
  • InitList(SqList &L) :初始化顺序表L——时间复杂度:O(1)
  • InsertList(SqList &L,int i,ElemType e) :在位置i处插入元素e ——时间复杂度:O(n)
  • ListDelete(SqList &L,int i):删除位置i处元素——时间复杂度:O(n)
  • LocateElem(SqList L,ElemType e) :返回顺序表L中第一个等于e的元素的位置——时间复杂度:O(n)
  • GetElem(SqList L, int i, ElemType &e):根据指定的位置序号i,获取顺序表L中第i个数据元素的值——时间复杂度:O(1)
  • Reverse(SqList &L) : 将原顺序表L直接倒置。
  • PrintList(SqList L):遍历顺序表L,并输出。
     

1.创建一个长度为n的顺序表L:

        创建一个长度为n顺序表L的核心代码:

  1. //------顺序表初始化前n个数据------//
  2. bool CreateList(SqList &L,int n)
  3. {
  4. if(n<0||n>MAXSIZE) return false; //n值不合法
  5. for(int i=0; i<n; i++){
  6. scanf("%d",&L.elem[i]);
  7. L.length++;
  8. }
  9. return true;
  10. }

        创建一个长度为n顺序表的完整代码如下:

  1. //******************************创建一个长度为n的顺序表L******************************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  37. void PrintList(SqList L)
  38. {
  39. printf("当前顺序表中所有元素为:");
  40. for(int i=0; i<L.length; i++)
  41. {
  42. printf("%d ",L.elem[i]);
  43. }
  44. printf("\n");
  45. }
  46. //------创建顺序表函数------//
  47. void Create(SqList &L)
  48. {
  49. int n;
  50. bool flag;
  51. L.length=0;
  52. printf("请输入要创建的顺序表的长度:");
  53. scanf("%d",&n);
  54. printf("请输入依次输入%d个数(空格隔开):",n);
  55. flag=CreateList(L,n);
  56. if(flag){
  57. printf("顺序表创建成功!\n");
  58. PrintList(L);
  59. }
  60. else
  61. printf("输入长度不合法!\n");
  62. }
  63. //------创建主函数------//
  64. int main()
  65. {
  66. SqList L;
  67. InitList(L);
  68. Create(L);
  69. }

        运行结果:


2.顺序表L的插入:

        顺序表L的插入的核心代码:

  1. //------顺序表的插入------//
  2. //-----【算法步骤】 -----//
  3. //1.判断插入位置i是否合法(i值的合法范围是1<=i<=n+1),若不合法则返回ERROR。
  4. //2.判断顺序表的存储空间是否已满,若满则返回ERROR。
  5. //3.将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动)。
  6. //4.将要插入的新元素e放入到第i个位置。
  7. //5.表长加1。
  8. Status ListInsert(SqList &L, int i, int e)
  9. {
  10. //在顺序表L中第i个位置插入新的元素e,i值的合法范围是1<=i<=L.length+1
  11. if(i<1||(i>L.length+1)) return ERROR; //i值不合法
  12. if(L.length==MAXSIZE) return ERROR; //当前存储空间已满
  13. for(int j=L.length-1; j>=i-1; j--)
  14. L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
  15. L.elem[i-1]=e; //将新元素e放入第i个位置
  16. ++L.length; //表长加1
  17. return OK;
  18. }

        顺序表L的插入的完整代码如下:

  1. //******************************先创建一个长度为n的顺序表L,然后对顺序表L进行元素插入******************************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------顺序表的插入1------//
  37. //-----【算法步骤】 -----//
  38. //1.判断插入位置i是否合法(i值的合法范围是1<=i<=n+1),若不合法则返回ERROR。
  39. //2.判断顺序表的存储空间是否已满,若满则返回ERROR。
  40. //3.将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动)。
  41. //4.将要插入的新元素e放入到第i个位置。
  42. //5.表长加1。
  43. Status ListInsert(SqList &L, int i, int e)
  44. {
  45. //在顺序表L中第i个位置插入新的元素e,i值的合法范围是1<=i<=L.length+1
  46. if(i<1||(i>L.length+1)) return ERROR; //i值不合法
  47. if(L.length==MAXSIZE) return ERROR; //当前存储空间已满
  48. for(int j=L.length-1; j>=i-1; j--)
  49. L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
  50. L.elem[i-1]=e; //将新元素e放入第i个位置
  51. ++L.length; //表长加1
  52. return OK;
  53. }
  54. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  55. void PrintList(SqList L)
  56. {
  57. printf("当前顺序表中所有元素为:");
  58. for(int i=0; i<L.length; i++)
  59. {
  60. printf("%d ",L.elem[i]);
  61. }
  62. printf("\n");
  63. }
  64. //------创建顺序表函数------//
  65. void Create(SqList &L)
  66. {
  67. int n;
  68. bool flag;
  69. L.length=0;
  70. printf("请输入要创建的顺序表的长度:");
  71. scanf("%d",&n);
  72. printf("请输入依次输入%d个数(空格隔开):",n);
  73. flag=CreateList(L,n);
  74. if(flag){
  75. printf("顺序表L创建成功!\n");
  76. PrintList(L);
  77. }
  78. else
  79. printf("输入长度不合法!\n");
  80. }
  81. //------插入顺序表函数------//
  82. void Insert(SqList &L)
  83. {
  84. int place;
  85. int e;
  86. bool flag;
  87. printf("请输入要插入的位置(从1开始)及元素:");
  88. scanf("%d%d",&place,&e);
  89. flag=ListInsert(L,place,e);
  90. if(flag)
  91. {
  92. printf("插入成功!!!\n");
  93. PrintList(L);
  94. }
  95. }
  96. //------创建主函数------//
  97. int main()
  98. {
  99. SqList L;
  100. InitList(L);
  101. Create(L);
  102. Insert(L);
  103. }

        运行结果:


3.顺序表L的删除:

        顺序表L的删除的核心代码:

  1. //------顺序表的删除------//
  2. //-----【算法步骤】 -----//
  3. //1.判断删除位置i是否合法(i值的合法范围是1<=i<=n),若不合法则返回ERROR。
  4. //2.将第i+1个至第n个的元素依次向前移动一个位置(i=n时无需移动)。
  5. //3.表长减1。
  6. Status ListDelete(SqList &L,int i)
  7. {
  8. //在顺序表L中删除第i个元素,i值的合法范围是1<=i<=L.length
  9. if(i<1||(i>L.length)) return ERROR; //i值不合法
  10. for(int j=i; j<=L.length-1; j++)
  11. L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
  12. --L.length; //表长减1
  13. return OK;
  14. }

        顺序表L的删除的完整代码实现如下:

  1. //******************************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行删除******************************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------顺序表的删除------//
  37. //-----【算法步骤】 -----//
  38. //1.判断删除位置i是否合法(i值的合法范围是1<=i<=n),若不合法则返回ERROR。
  39. //2.将第i+1个至第n个的元素依次向前移动一个位置(i=n时无需移动)。
  40. //3.表长减1。
  41. Status ListDelete(SqList &L,int i)
  42. {
  43. //在顺序表L中删除第i个元素,i值的合法范围是1<=i<=L.length
  44. if(i<1||(i>L.length)) return ERROR; //i值不合法
  45. for(int j=i; j<=L.length-1; j++)
  46. L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
  47. --L.length; //表长减1
  48. return OK;
  49. }
  50. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  51. void PrintList(SqList L)
  52. {
  53. printf("当前顺序表中所有元素为:");
  54. for(int i=0; i<L.length; i++)
  55. {
  56. printf("%d ",L.elem[i]);
  57. }
  58. printf("\n");
  59. }
  60. //------创建顺序表函数------//
  61. void Create(SqList &L)
  62. {
  63. int n;
  64. bool flag;
  65. L.length=0;
  66. printf("请输入要创建的顺序表的长度:");
  67. scanf("%d",&n);
  68. printf("请输入依次输入%d个数(空格隔开):",n);
  69. flag=CreateList(L,n);
  70. if(flag){
  71. printf("顺序表L创建成功!\n");
  72. PrintList(L);
  73. }
  74. else
  75. printf("输入长度不合法!\n");
  76. }
  77. //------删除顺序表函数------//
  78. void Delete(SqList &L)
  79. {
  80. int place;
  81. bool flag;
  82. printf("请输入要删除的位置(从1开始):");
  83. scanf("%d",&place);
  84. flag=ListDelete(L,place);
  85. if(flag)
  86. {
  87. printf("删除成功!\n");
  88. PrintList(L);
  89. }
  90. }
  91. //------创建主函数------//
  92. int main()
  93. {
  94. SqList L;
  95. InitList(L);
  96. Create(L);
  97. Delete(L);
  98. }

        运行结果:


4.顺序表L的查找:

        顺序表的查找(按值查找) 核心代码:

  1. //------顺序表的查找(按值查找)------//
  2. //-----【算法步骤】 -----//
  3. //1.从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1。
  4. //2.若查遍整个顺序表都没有找到,则查找失败,返回0。
  5. int LocateElem(SqList L, int e)
  6. {
  7. //在顺序表L中查找值为e的数据元素,返回其序号。
  8. for(int i=0; i<L.length;i++)
  9. if(L.elem[i]==e) return i+1; //查找成功,返回序号i+1。
  10. return 0; //查找失败,返回0。
  11. }

        顺序表的查找(按值查找) 完整代码如下: 

  1. //************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行按值查找*************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------顺序表的查找(按值查找)------//
  37. //-----【算法步骤】 -----//
  38. //1.从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1。
  39. //2.若查遍整个顺序表都没有找到,则查找失败,返回0。
  40. int LocateElem(SqList L, int e)
  41. {
  42. //在顺序表L中查找值为e的数据元素,返回其序号。
  43. for(int i=0; i<L.length;i++)
  44. if(L.elem[i]==e) return i+1; //查找成功,返回序号i+1。
  45. return 0; //查找失败,返回0。
  46. }
  47. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  48. void PrintList(SqList L)
  49. {
  50. printf("当前顺序表中所有元素为:");
  51. for(int i=0; i<L.length; i++)
  52. {
  53. printf("%d ",L.elem[i]);
  54. }
  55. printf("\n");
  56. }
  57. //------创建顺序表函数------//
  58. void Create(SqList &L)
  59. {
  60. int n;
  61. bool flag;
  62. L.length=0;
  63. printf("请输入要创建的顺序表的长度:");
  64. scanf("%d",&n);
  65. printf("请输入依次输入%d个数(空格隔开):",n);
  66. flag=CreateList(L,n);
  67. if(flag){
  68. printf("顺序表L创建成功!\n");
  69. PrintList(L);
  70. }
  71. else
  72. printf("输入长度不合法!\n");
  73. }
  74. //------查找顺序表函数------//
  75. void Search(SqList L)
  76. {
  77. int e,flag;
  78. printf("请输入要查找的值:");
  79. scanf("%d",&e);
  80. flag=LocateElem(L,e);
  81. if(flag)
  82. {
  83. printf("该元素的位置为:%d\n",flag);
  84. printf("查找成功!");
  85. }
  86. else
  87. printf("未查找到该元素!");
  88. }
  89. //------创建主函数------//
  90. int main()
  91. {
  92. SqList L;
  93. InitList(L);
  94. Create(L);
  95. Search(L);
  96. }

        运行结果:


        顺序表的查找(按位置查找) 核心代码:

  1. //------顺序表的查找(按位置查找)------//
  2. //-----【算法步骤】 -----//
  3. //1.判断指定的位置序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR。
  4. //2.若i值合理,则将第i个数据元素L.length[i-1]赋值给参数e,通过e返回第i个数据元素的传值。
  5. Status GetElem(SqList L, int i, int &e)
  6. {
  7. if(i<1||i>L.length) return ERROR; //判断i值是否合理
  8. e=L.elem[i-1]; //elem[i-1]单元存储第i个数据元素
  9. return OK;
  10. }

         顺序表的查找(按位置查找) 完整代码如下: 

  1. //****************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行按位置查找****************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------顺序表的查找(按位置查找)------//
  37. //-----【算法步骤】 -----//
  38. //1.判断指定的位置序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR。
  39. //2.若i值合理,则将第i个数据元素L.length[i-1]赋值给参数e,通过e返回第i个数据元素的传值。
  40. Status GetElem(SqList L, int i, int &e)
  41. {
  42. if(i<1||i>L.length) return ERROR; //判断i值是否合理
  43. e=L.elem[i-1]; //elem[i-1]单元存储第i个数据元素
  44. return OK;
  45. }
  46. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  47. void PrintList(SqList L)
  48. {
  49. printf("当前顺序表中所有元素为:");
  50. for(int i=0; i<L.length; i++)
  51. {
  52. printf("%d ",L.elem[i]);
  53. }
  54. printf("\n");
  55. }
  56. //------创建顺序表函数------//
  57. void Create(SqList &L)
  58. {
  59. int n;
  60. bool flag;
  61. L.length=0;
  62. printf("请输入要创建的顺序表的长度:");
  63. scanf("%d",&n);
  64. printf("请输入依次输入%d个数(空格隔开):",n);
  65. flag=CreateList(L,n);
  66. if(flag){
  67. printf("顺序表L创建成功!\n");
  68. PrintList(L);
  69. }
  70. else
  71. printf("输入长度不合法!\n");
  72. }
  73. //------查找顺序表函数------//
  74. void Get(SqList L)
  75. {
  76. int e,i,flag;
  77. printf("请输入要查找的位置:");
  78. scanf("%d",&i);
  79. flag=GetElem(L,i,e);
  80. if(flag)
  81. {
  82. printf("该位置的元素为:%d\n",e);
  83. printf("查找成功!");
  84. }
  85. else
  86. printf("未查找到该元素!");
  87. }
  88. //------创建主函数------//
  89. int main()
  90. {
  91. SqList L;
  92. InitList(L);
  93. Create(L);
  94. Get(L);
  95. }

        运行结果:


5.顺序表L的倒置:

        顺序表L的倒置的核心代码:

  1. //------顺序表L的倒置------//
  2. void ReverseList(SqList &L)
  3. {
  4. //顺序表L的逆置
  5. for(int i=0;i<L.length/2;i++) //
  6. {
  7. //交换数据
  8. int temp=L.elem[i];
  9. L.elem[i]=L.elem[L.length-1-i];
  10. L.elem[L.length-1-i]=temp;
  11. }
  12. }

        顺序表L的倒置的完整代码如下:

  1. //******************************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行倒置******************************//
  2. #include<stdio.h>
  3. #define OK 1
  4. #define ERROR 0
  5. typedef int ElemType;
  6. typedef int Status;
  7. //------顺序表的存储结构------//
  8. #define MAXSIZE 100 //顺序表可能达到的最大长度
  9. typedef struct
  10. {
  11. ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
  12. int length; //当前长度
  13. }SqList; //顺序表的结构类型为SqList
  14. //------顺序表的初始化------//
  15. //-----【算法步骤】 -----//
  16. //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
  17. //2.将表的当前长度设为0。
  18. bool InitList(SqList &L)
  19. {
  20. //构造一个空的顺序表L
  21. L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
  22. if(!L.elem) return false; //存储分配失败退出
  23. L.length=0; //空表长度为0
  24. return true;
  25. }
  26. //------顺序表初始化前n个数据------//
  27. bool CreateList(SqList &L,int n)
  28. {
  29. if(n<0||n>MAXSIZE) return false; //n值不合法
  30. for(int i=0; i<n; i++){
  31. scanf("%d",&L.elem[i]);
  32. L.length++;
  33. }
  34. return true;
  35. }
  36. //------顺序表L的倒置------//
  37. void ReverseList(SqList &L)
  38. {
  39. //顺序表L的逆置
  40. for(int i=0;i<L.length/2;i++) //
  41. {
  42. //交换数据
  43. int temp=L.elem[i];
  44. L.elem[i]=L.elem[L.length-1-i];
  45. L.elem[L.length-1-i]=temp;
  46. }
  47. }
  48. //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
  49. void PrintList(SqList L)
  50. {
  51. printf("当前顺序表中所有元素为:");
  52. for(int i=0; i<L.length; i++)
  53. {
  54. printf("%d ",L.elem[i]);
  55. }
  56. printf("\n");
  57. }
  58. //------创建顺序表函数------//
  59. void Create(SqList &L)
  60. {
  61. int n;
  62. bool flag;
  63. L.length=0;
  64. printf("请输入要创建的顺序表的长度:");
  65. scanf("%d",&n);
  66. printf("请输入依次输入%d个数(空格隔开):",n);
  67. flag=CreateList(L,n);
  68. if(flag){
  69. printf("顺序表L创建成功!\n");
  70. PrintList(L);
  71. }
  72. else
  73. printf("输入长度不合法!\n");
  74. }
  75. //------倒置顺序表函数------//
  76. void Reverse(SqList L)
  77. {
  78. ReverseList(L);
  79. printf("顺序表L倒置后为:");
  80. for(int i=0; i<L.length; i++)
  81. {
  82. printf("%d ",L.elem[i]);
  83. }
  84. }
  85. //------创建主函数------//
  86. int main()
  87. {
  88. SqList L;
  89. InitList(L);
  90. Create(L);
  91. Reverse(L);
  92. }

        运行结果:


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/451319
推荐阅读
相关标签
  

闽ICP备14008679号