• C : DS顺序表--合并操作


    Description

    建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)

    已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序

    Input

    第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等

    第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等

    Output

    顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开

    第1行输出创建后的顺序表内容

    Sample

    #0
    Input

    Copy

    3 11 33 55
    5 22 44 66 88 99
    Output

    Copy

    8 11 22 33 44 55 66 88 99 

    1. #include
    2. using namespace std;
    3. #define ok 0
    4. #define error -1
    5. //顺序表定义
    6. class Seqlist
    7. {
    8. int* list;//元素数组
    9. int maxsize;//顺序表最大长度
    10. int size;//顺序表实际长度
    11. public:
    12. Seqlist();
    13. Seqlist(int* list, int size);
    14. ~Seqlist();
    15. Seqlist add(Seqlist& s);
    16. void listdisplay();
    17. };
    18. Seqlist::Seqlist()//初始化
    19. {
    20. maxsize = 1000;
    21. size = 0;
    22. list = new int[maxsize];
    23. }
    24. Seqlist::Seqlist(int* l, int s)//赋值 传入一个数组 和 数组长度s
    25. {
    26. size = s;
    27. maxsize = 1000;
    28. list = new int[maxsize];//一定要定义为maxsize,否则会导致溢出
    29. for (int i = 0; i < s; i++)
    30. {
    31. list[i] = l[i];//list复制 赋值
    32. }
    33. }
    34. Seqlist::~Seqlist()
    35. {
    36. delete[]list;
    37. }
    38. Seqlist Seqlist::add(Seqlist& s)//合并
    39. {
    40. int i, j, k;
    41. i = j = k = 0;
    42. Seqlist ss;//放两顺序表合并后的数据
    43. while (i < size && j < s.size)//两者非空
    44. {
    45. if (list[i] < s.list[j])
    46. {
    47. ss.list[k++] = list[i++];
    48. }
    49. else
    50. {
    51. ss.list[k++] = s.list[j++];
    52. }
    53. }
    54. while (i < size)//s已空
    55. {
    56. ss.list[k++] = list[i++];
    57. }
    58. while (j < s.size)//原顺序表已空
    59. {
    60. ss.list[k++] = s.list[j++];
    61. }
    62. ss.size = k;//总长
    63. return ss;
    64. }
    65. void Seqlist::listdisplay()//输出
    66. {
    67. cout << size << " ";
    68. for (int i = 0; i < size; i++)
    69. {
    70. cout << list[i] << " ";
    71. }
    72. cout << endl;
    73. }
    74. int main()
    75. {
    76. //第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等
    77. int n;
    78. cin >> n;
    79. int* list1 = new int[n];//在内存中动态地分配了一个能够存储 n 个整数的数组
    80. for (int i = 0; i < n; i++)
    81. {
    82. cin >> list1[i];
    83. }
    84. Seqlist myList1(list1, n);
    85. //第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列
    86. int m;
    87. cin >> m;
    88. int* list2 = new int[m];
    89. for (int i = 0; i < m; i++)
    90. {
    91. cin >> list2[i];
    92. }
    93. Seqlist myList2(list2, m);
    94. Seqlist ss = myList1.add(myList2);//合并
    95. ss.listdisplay();//输出
    96. }

  • 相关阅读:
    英语单词(二)
    【微服务】部署mysql集群,主从复制,读写分离
    JWT生成与解析/JWT令牌前端存储
    Faiss原理和使用总结
    最新出炉的阿里巴巴面试题及答案汇总(513页)
    Redis-字符串类型
    java Excel 自用开发模板
    【C++】面向对象示例 - 数组类 ( 示例需求 | 创建封装类 | 数组类头文件 Array.h | 数组类实现 Array.cpp | 测试类 Test.cpp - 主函数入口 )
    curl命令服务器上执行http请求
    基于单片机的智能病床呼叫系统设计与仿真
  • 原文地址:https://blog.csdn.net/m0_73605639/article/details/133159848