【问题】用C++结构体实现顺序表,数据超过数组长度后,表长自动+1

 1 #include <stdio.h>
 2 #include "stdlib.h"
 3 
 4 #define LIST_INIT_SIZE 100
 5 #define LISTINCREMENT 10
 6 
 7 typedef int ElemType;
 8 
 9 typedef struct
10 {
11     ElemType elem[LIST_INIT_SIZE];
12     int length;
13     int listsize;
14 }SqList;
15 
16 class Sq
17 {
18     public:
19         SqList sqList;
20 
21         Sq();
22         ElemType getElem(int i);
23         bool listInsert(int i, ElemType e);
24         bool listDelete(int i, ElemType &e);
25 };
26 
27 Sq::Sq()
28 {
29     this->sqList.length = 0;
30     this->sqList.listsize = LIST_INIT_SIZE;
31 }
32 
33 ElemType Sq::getElem(int i)
34 {
35     if (i<1 || i>sqList.length) return ElemType();
36 
37     ElemType elem = sqList.elem[i - 1];
38 
39     return elem;
40 }
41 
42 bool Sq::listInsert(int i, ElemType e)
43 {
44     if (i<1 || i>sqList.length + 1) return false;
45 
46     for (int j = sqList.length - 1; j >= i; j++)
47     {
48         sqList.elem[j + 1] = sqList.elem[j];
49     }
50 
51     if(i==101)
52     {
53         printf("%d\n",sqList.length);//100
54     }
55     sqList.elem[i - 1] = e;
56     if(i==101)
57     {
58         printf("%d\n",sqList.length);//101
59     }
60     ++sqList.length;
61     if(i==101)
62     {
63         printf("%d\n",sqList.length);//102
64     }
65     return true;
66 }
67 
68 int main()
69 {
70     Sq sq;
71     for (int i = 1; i <= 102; i++)
72     {
73         sq.listInsert(i, i);
74     }
75     
76     return 0;
77 }
View Code

当i==10时,sq.listInsert(int,int)方法中,插入之后length自动+1???执行自动操作后又自动+1。

转载于:https://www.cnblogs.com/junlu/p/9494439.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值