• DS 顺序表--类实现(C++数据结构题)


    实现顺序表的用 C++ 语言和类实现顺序表
    属性包括:数组、实际长度、最大长度(设定为 1000
    操作包括:创建、插入、删除、查找
    类定义参考
    1. #include
    2. using namespace std;
    3. #define ok 0
    4. #define error -1
    5. // 顺序表类定义
    6. class SeqList
    7. {
    8. private:
    9. int *list; // 元素数组
    10. int maxsize; // 顺序表最大长度
    11. int size; // 顺序表实际长度
    12. public:
    13. SeqList(); // 构造函数
    14. ~SeqList(); // 析构函数
    15. int list_size(); // 获取顺序表实际长度
    16. int list_insert(int i, int item); // 插入一个元素,参数是插入的数值和位置
    17. int list_del(int i); // 删除一个元素,参数是删除的位置
    18. int list_get(int i); // 获取一个元素,参数是获取的位置
    19. void list_display(); // 输出整个顺序表
    20. };
    21. SeqList::SeqList()
    22. {
    23. maxsize = 1000;
    24. size = 0;
    25. list = new int[maxsize];
    26. }
    27. SeqList::~SeqList()
    28. {
    29. delete []list;
    30. }

    输入
    第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据
    第2行输入要插入的位置和新数据
    第3行输入要插入的位置和新数据
    第4行输入要删除的位置
    第5行输入要删除的位置
    第6行输入要查找的位置
    第7行输入要查找的位置

    输出
    数据之间用空格隔开

    第1行输出创建后的顺序表内容,包括顺序表实际长度和数据

    每成功执行一次操作(插入或删除),输出执行后的顺序表内容

    每成功执行一次查找,输出查找到的数据

    如果执行操作失败(包括插入、删除、查找等失败),输出字符串error,不必输出顺序表内容

    样例输入
    6 11 22 33 44 55 66
    3 777
    1 888
    1
    9
    0
    5
    样例输出
    6 11 22 33 44 55 66
    7 11 22 777 33 44 55 66
    8 888 11 22 777 33 44 55 66
    7 11 22 777 33 44 55 66
    error
    error
    44
    提示
    第i个位置是逻辑意义的位置,从1开始,在实际编程用数组,从0开始,对应数组i-1位置

    AC代码:

    1. #include
    2. #include
    3. using namespace std;
    4. #define ok 0
    5. #define error -1
    6. // 顺序表类定义
    7. class SeqList
    8. {
    9. private:
    10. int* list; // 元素数组
    11. int maxsize; // 顺序表最大长度
    12. int size; // 顺序表实际长度
    13. public:
    14. SeqList(); // 构造函数
    15. ~SeqList(); // 析构函数
    16. int list_size() {
    17. return size;
    18. }; // 获取顺序表实际长度
    19. void set(int length) {
    20. this->size = length;
    21. for (int i = 0; i < length; i++) {
    22. cin >> *(list + i);
    23. }
    24. cout << size << " ";
    25. list_display();
    26. }//用于初始化数组
    27. void list_insert(int i, int item) {
    28. if (i <= this->list_size()+ 1 && i > 0) {
    29. for (int j = size; j > i - 1; j--) {
    30. *(list + j) = *(list + j - 1);
    31. }//从i-1位置开始整体向后移动一位
    32. *(list + i - 1) = item;//插入元素
    33. size++;//长度加一
    34. cout << size << " ";
    35. list_display();
    36. }
    37. else{
    38. cout << "error" << endl;
    39. }
    40. }; // 插入一个元素,参数是插入的数值和位置
    41. void list_del(int i) {
    42. if (i <= this->list_size() && i > 0) {
    43. for (int j = i - 1; j < size; j++) {
    44. *(list + j) = *(list + j + 1);
    45. }//从i-1开始整体向前移动一位,覆盖要删除的数据
    46. size--;//长度减一
    47. cout << size << " ";
    48. list_display();
    49. }
    50. else {
    51. cout << "error" << endl;
    52. }
    53. }; // 删除一个元素,参数是删除的位置
    54. void list_get(int i) {
    55. if (i <= this->list_size() && i > 0) {
    56. cout<<*(list + i - 1);
    57. }
    58. else {
    59. cout << "error" << endl;
    60. }
    61. }; // 获取一个元素,参数是获取的位置
    62. void list_display() {
    63. for (int i = 0; i < size; i++) {
    64. cout << *(list + i)<<" ";
    65. }
    66. cout << endl;
    67. }; // 输出整个顺序表
    68. };
    69. SeqList::SeqList()
    70. {
    71. maxsize = 1000;
    72. size = 0;
    73. list = new int[maxsize];
    74. }
    75. SeqList::~SeqList()
    76. {
    77. delete[]list;
    78. }
    79. int main() {
    80. int t;
    81. int n;
    82. cin >> t;
    83. SeqList *seqlist = new SeqList;
    84. seqlist->set(t);
    85. int p, q;
    86. cin >> p >> q;
    87. seqlist->list_insert(p, q);
    88. cin >> p >> q;
    89. seqlist->list_insert(p, q);
    90. cin >> p;
    91. seqlist->list_del(p);
    92. cin >> p;
    93. seqlist->list_del(p);
    94. cin >> q;
    95. seqlist->list_get(q);
    96. cin >> q;
    97. seqlist->list_get(q);
    98. }

  • 相关阅读:
    vue中provide和inject依赖注入刷新当前页面用法
    蓝桥杯1045
    K-means聚类是一种非常流行的聚类算法
    点三流水灯
    SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.26 SpringBoot 整合 RocketMQ
    基于若依ruoyi-nbcio支持flowable流程分类里增加流程应用类型
    react 网页/app复制分享链接到剪切板,分享到国外各大社交平台,通过WhatsApp方式分享以及SMS短信方式分享链接内容
    89.(cesium篇)cesium聚合图(自定义图片)
    虚拟机没有桥接模式--物理机WiFi不见了--注册表修复
    java如何进阶?
  • 原文地址:https://blog.csdn.net/weixin_73609038/article/details/132897470