当前位置:   article > 正文

数据结构实验一 线性表的顺序存储结构_实验一 一 基于线性表的图书信息管理 一、 实验目的 1.掌握线性表的顺序存储表示

实验一 一 基于线性表的图书信息管理 一、 实验目的 1.掌握线性表的顺序存储表示

一、实验目的

1.熟练掌握顺序表基本操作的C语言实现。

2.掌握顺序表的应用,逐步培养解决实际问题的能力。

3.培养学生程序设计能力,要求编写的程序结构清楚和正确易读,符合软件工程的规范。

4.培养学生利用顺序表解决实际问题的能力。

二、实验题目 

 1.设计并验证以下算法:设顺序表L中的数据元素为整数且非递增有序,删除其值相同的多余元素,即顺序表L中相同的元素只保留一个,并逆置删除后的顺序表L。

(1)根据键盘输入数据建立顺序表L。

(2)输出顺序表L、删除值相同多余元素后的顺序表L\逆置的顺序表L。

(3)假设顺序表L的长度为n,要求以O(n)的时间复杂度完成对值相同多余元素的删除

2.给定一个含n(n≥1)个整数的数组,请设计实现一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。

三、程序清单

1.

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define LIST_INIT_SIZE 100
  4. #define LISTINCREMENT 10
  5. #define OK 1
  6. #define ERROR -1
  7. typedef int Elemtype;
  8. typedef int Status;
  9. typedef struct{
  10. Elemtype *elem; //存储空间基址
  11. int length; //当前长度
  12. int listsize; //当前分配的存储容量(顺序表最大长度)
  13. }SqList;
  14. //初始化顺序表
  15. Status InitList(SqList &L){
  16. L.elem = (Elemtype * )malloc(LIST_INIT_SIZE *sizeof(Elemtype));
  17. if(!L.elem){
  18. exit(ERROR); // 异常处理
  19. }
  20. L.length = 0;
  21. L.listsize = LIST_INIT_SIZE;
  22. return OK;
  23. }
  24. //把元素放入顺序表
  25. Status WriteList(SqList &L){
  26. printf("请输入需要创建顺序表的长度:");
  27. scanf("%d", &L.length);
  28. printf("请输入%d个需要放入的元素:\n", L.length);
  29. if(L.length<=0){
  30. return ERROR; // 异常处理
  31. }
  32. for(int i=0;i<L.length;i++){
  33. scanf("%d", &L.elem[i]); // 将元素放入顺序表
  34. }
  35. printf("顺序表L为:"); // 检验顺序表
  36. for(int i=0;i<L.length;i++){
  37. printf("%d ",L.elem[i]);
  38. }
  39. printf("\n");
  40. return OK;
  41. }
  42. // 顺序表删除相同的元素
  43. Status DeleteList(SqList &L) {
  44. int i,j;
  45. if(L.length<=0){
  46. return ERROR;
  47. }
  48. for(i=0,j=1;j<L.length;j++){
  49. if(L.elem[i]!=L.elem[j]){
  50. L.elem[++i]=L.elem[j];
  51. }
  52. }
  53. L.length=i+1;
  54. printf("删除值相同多余元素后的顺序表L为:");
  55. for(int i=0;i<L.length;i++){
  56. printf("%d ",L.elem[i]);
  57. }
  58. printf("\n");
  59. return OK;
  60. }
  61. //顺序表的逆置
  62. Status InversionList(SqList &L) {
  63. int t;
  64. int length=L.length;
  65. for(int i=0;i<=length/2;i++){
  66. t=L.elem[i];
  67. L.elem[i]=L.elem[length-1];
  68. L.elem[length-1]=t;
  69. length--;
  70. }
  71. printf("逆置的顺序表L为:");
  72. for(int i=0;i<L.length;i++){
  73. printf("%d ",L.elem[i]);
  74. }
  75. printf("\n");
  76. return OK;
  77. }
  78. int main(){
  79. SqList L;
  80. int i;
  81. i=InitList(L);
  82. i=WriteList(L);
  83. i=DeleteList(L);
  84. i=InversionList(L);
  85. if(i==1){
  86. printf("完成!");
  87. }
  88. else{
  89. printf("失败!");
  90. }
  91. }

 2.

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define LIST_INIT_SIZE 100
  4. #define LISTINCREMENT 10
  5. #define OK 1
  6. #define ERROR -1
  7. typedef int Elemtype;
  8. typedef int Status;
  9. typedef struct{
  10. Elemtype *elem; //存储空间基址
  11. int length; //当前长度
  12. int listsize; //当前分配的存储容量(顺序表最大长度)
  13. }SqList;
  14. //初始化顺序表
  15. Status InitList(SqList &L){
  16. L.elem = (Elemtype * )malloc(LIST_INIT_SIZE *sizeof(Elemtype));
  17. if(!L.elem){
  18. exit(ERROR);
  19. }
  20. L.length = 0;
  21. L.listsize = LIST_INIT_SIZE;
  22. return OK;
  23. }
  24. //把元素放入顺序表
  25. Status WriteList(SqList &L){
  26. printf("请输入需要创建顺序表的长度:");
  27. scanf("%d", &L.length);
  28. printf("请输入%d个需要放入的元素:\n", L.length);
  29. if(L.length<=0){
  30. return ERROR;
  31. }
  32. for(int i=0;i<L.length;i++){
  33. scanf("%d", &L.elem[i]);
  34. }
  35. printf("顺序表L为:");
  36. for(int i=0;i<L.length;i++){
  37. printf("%d ",L.elem[i]);
  38. }
  39. printf("\n");
  40. return OK;
  41. }
  42. int FindMissMin(SqList &L)
  43. {
  44. int min = 1;
  45. int i;
  46. int a[LIST_INIT_SIZE];
  47. for(i=0;i<L.length;i++){
  48. if(L.elem[i]>=1){
  49. a[L.elem[i]]=1;
  50. }
  51. }
  52. for(i=1;i<LIST_INIT_SIZE;i++){
  53. if(a[i]==0){
  54. return i;
  55. }
  56. }
  57. }
  58. int main(){
  59. SqList L;
  60. int i;
  61. InitList(L);
  62. WriteList(L);
  63. i=FindMissMin(L);
  64. printf("未出现的最小整数为%d",i);

四、实验结果 

1.

2.

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

闽ICP备14008679号