• 建一个书本的序号(coef)、价格(expn)的顺序表,以及输入、输出、增、删、改、查、插入等操作


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    题目:

    建一个书本的序号(coef)、价格(expn)的顺序表,以及输入、输出、增、删、改、查、插入等操作。

    目录

    题目:

    一、创建顺序表

    二、顺序表的初始化+输入

    三、顺序表的取值

    四、顺序表的查找

    五、顺序表的插入

    六、顺序表的删除

    七、顺序表的输出 

    全部代码:

    结果:

    总结


    一、创建顺序表

    1. typedef struct
    2. {
    3. float coef;
    4. int expn;
    5. }book;
    6. typedef struct {
    7. book *elem; //存储空间的基地址
    8. int length; //当前长度
    9. } SqList;

    二、顺序表的初始化+输入

    1. Status InitList(SqList &L) { //算法2.1 顺序表的初始化
    2. //构造一个空的顺序表L
    3. L.elem = new book[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
    4. if (!L.elem)
    5. exit(OVERFLOW); //存储分配失败退出
    6. //(必须先开闭空间,不然直接输入没有结果)
    7. L.length = 0; //输入; (直接在里面创建输入)
    8. int i,n;
    9. cout<<"请输入n的值(个数):"<
    10. cin>>n;
    11. cout<<"请输入他们的值:(序号和价格)"<
    12. for(int i=0;i
    13. {
    14. cin>>L.elem[i].expn>>L.elem[i].coef;
    15. L.length++;
    16. }
    17. return OK;
    18. }
    1. //void shuru(SqList &L,int a){//手动输入 //也可以先建好空间,再在外面创建函数输入;
    2. /// int i;
    3. //for(i=0;i
    4. /// cin >>L.elem[i].coef>>L.elem[i].expn;
    5. /// L.length=a;//更新线性表的长度
    6. //cout <<"输入成功" <
    7. //cout <
    8. //}

    三、顺序表的取值

    1. Status GetElem(SqList L, int i, book &e) {//算法2.2 顺序表的取值
    2. if(i<1||i>L.length ) return ERROR;
    3. e=L.elem[i-1] ;
    4. cout<" "<
    5. return OK;
    6. }

    四、顺序表的查找

    1. Status LocateElem(SqList L,book e)//查找
    2. {
    3. for(int i=0;i
    4. if(L.elem[i].expn==e.expn) return i+1;
    5. return 0;
    6. }

    五、顺序表的插入

    1. Status ListInsert(SqList &L, int i, book e) { //算法2.4 顺序表的插入
    2. //在顺序表L中第i个位置之前插入新的元素e
    3. //i值的合法范围是1<=i<=L.length+1
    4. if((i<1)||(i>L.length +1)) return ERROR;
    5. if(L.length ==MAXSIZE)return ERROR;
    6. for(int j=L.length -1;j>=i-1;j--)
    7. L.elem[j+1]=L.elem [j];
    8. L.elem[i-1]=e;
    9. ++L.length ;
    10. return OK;
    11. }

    六、顺序表的删除

    1. Status ListDelete(SqList &L, int i) { //算法2.5 顺序表的删除
    2. //在顺序表L中删除第i个元素,并用e返回其值
    3. //i值的合法范围是1<=i<=L.length
    4. //TODO
    5. if((i<1)||(i>L.length ))return ERROR;
    6. for(int j=i;j<=L.length -1;j++)
    7. L.elem[j-1]=L.elem [j];
    8. --L.length ;
    9. return OK;
    10. }

    七、顺序表的输出 

    1. void VisitList(SqList L)//输出
    2. {
    3. int i;
    4. cout<<"序号"<<" "<<"价格"<
    5. for(i=0;i
    6. {
    7. cout<" "<
    8. cout<
    9. }
    10. }

    全部代码:

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. using namespace std;
    7. #define OK 1
    8. #define ERROR 0
    9. #define OVERFLOW -2
    10. typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
    11. typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
    12. #define MAXSIZE 100 //顺序表可能达到的最大长度
    13. typedef struct
    14. {
    15. float coef;
    16. int expn;
    17. }book;
    18. typedef struct {
    19. book *elem; //存储空间的基地址
    20. int length; //当前长度
    21. } SqList;
    22. Status InitList(SqList &L) { //算法2.1 顺序表的初始化
    23. //构造一个空的顺序表L
    24. L.elem = new book[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
    25. if (!L.elem)
    26. exit(OVERFLOW); //存储分配失败退出
    27. //(必须先开闭空间,不然直接输入没有结果)
    28. L.length = 0; //输入; (直接在里面创建输入)
    29. int i,n;
    30. cout<<"请输入n的值(个数):"<
    31. cin>>n;
    32. cout<<"请输入他们的值:(序号和价格)"<
    33. for(int i=0;i
    34. {
    35. cin>>L.elem[i].expn>>L.elem[i].coef;
    36. L.length++;
    37. }
    38. return OK;
    39. }
    40. //void shuru(SqList &L,int a){//手动输入 //也可以先建好空间,再在外面创建函数输入;
    41. /// int i;
    42. //for(i=0;i
    43. /// cin >>L.elem[i].coef>>L.elem[i].expn;
    44. /// L.length=a;//更新线性表的长度
    45. //cout <<"输入成功" <
    46. //cout <
    47. //}
    48. Status GetElem(SqList L, int i, book &e) {//算法2.2 顺序表的取值
    49. if(i<1||i>L.length ) return ERROR;
    50. e=L.elem[i-1] ;
    51. cout<" "<
    52. return OK;
    53. }
    54. Status LocateElem(SqList L,book e)//查找
    55. {
    56. for(int i=0;i
    57. if(L.elem[i].expn==e.expn) return i+1;
    58. return 0;
    59. }
    60. Status ListInsert(SqList &L, int i, book e) { //算法2.4 顺序表的插入
    61. //在顺序表L中第i个位置之前插入新的元素e
    62. //i值的合法范围是1<=i<=L.length+1
    63. if((i<1)||(i>L.length +1)) return ERROR;
    64. if(L.length ==MAXSIZE)return ERROR;
    65. for(int j=L.length -1;j>=i-1;j--)
    66. L.elem[j+1]=L.elem [j];
    67. L.elem[i-1]=e;
    68. ++L.length ;
    69. return OK;
    70. }
    71. Status ListDelete(SqList &L, int i) { //算法2.5 顺序表的删除
    72. //在顺序表L中删除第i个元素,并用e返回其值
    73. //i值的合法范围是1<=i<=L.length
    74. //TODO
    75. if((i<1)||(i>L.length ))return ERROR;
    76. for(int j=i;j<=L.length -1;j++)
    77. L.elem[j-1]=L.elem [j];
    78. --L.length ;
    79. return OK;
    80. }
    81. void VisitList(SqList L)//输出
    82. {
    83. int i;
    84. cout<<"序号"<<" "<<"价格"<
    85. for(i=0;i
    86. {
    87. cout<" "<
    88. cout<
    89. }
    90. }
    91. int main()
    92. {SqList S;
    93. //int a;
    94. book e;
    95. InitList(S) ;
    96. cout<<"输出顺序表的全部值:"<
    97. VisitList(S);
    98. cout<<"查找,这里取的是序号expn,(奇数位)";
    99. cin>>e.expn;//关键点,需要给值 LocateElem(S,e)中的;
    100. if(LocateElem(S,e)==0)
    101. cout<<"没有找到e"<
    102. else
    103. cout<<"找到了e,位置在:" << LocateElem(S,e)<
    104. cout<<"取值,输出第二个expn:";
    105. GetElem(S,2,e);
    106. cout<<"请输入插入第二位置的值(序号和价格)";
    107. cin>>e.expn>>e.coef;
    108. ListInsert(S,2,e);
    109. cout<<"结果为" <
    110. VisitList(S);
    111. cout<<"删除第二个数据"<
    112. ListDelete(S,2);
    113. cout<<"结果为"<
    114. VisitList(S);
    115. cout<<"数据表的长度为:";
    116. cout<
    117. return OK;
    118. }

    结果:


     

    总结

    提示:这里对文章进行总结:
    例如:以上就是今天要讲的内容,本文仅仅简单介绍了建一个书本的序号(coef)、价格(expn)的顺序表,以及输入、输出、增、删、改、查、插入等操作

  • 相关阅读:
    详细说明static关键字,各种使用场景以及作用
    中转服务器是干嘛的?
    国际财务系统基于ShardingSphere的数据分片和一主多从实践
    uni-upgrade-center 升级中心详细流程
    C++ 构造函数
    学习pytorch7 神经网络的基本骨架--nn,module的使用
    CAS详解
    STL中最常见的三种容器vector、list、map对比分析
    学生HTML个人网页作业作品:HTML绿色的化妆品静态网站(web前端网页制作课作业)
    基于 nodejs+vue旅游推荐系统 mysql
  • 原文地址:https://blog.csdn.net/m0_65420451/article/details/126921316