该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
52.Status ListInsert_Sq(SqList *L, int i, ElemType e)
53.{
54. ElemType *newBase = NULL;
55. ElemType *q = NULL;
56. ElemType *p = NULL;
57.
58. if(i < 1 || i > L->length + 1)
59. {
60. return ERROR; //边界检查
61. }
62. //当前存储空间已满,增加分配
63. if(L->length >= L->listSize)
64. {
65. //realloc()函数是关键点,所以要先明白这个函数的用法
66. newBase = (ElemType *)realloc(L->elem, (L->listSize + LIST_INCREMENT) * sizeof(ElemType));
67. if(!newBase)
68. {
69. exit(OVERFLOW); //存储分配失败
70. }
71. L->elem = newBase; //新基址
72. L->listSize += LIST_INCREMENT; //增加存储容量
73. }
74. q = L->elem + (i-1); //q为插入位置
75. //插入位置及之后的元素右移
76. for(p = L->elem + (L->length - 1); p >= q; --p)
77. {
78. *(p+1) = *p;
79. }
80. *q = e;
81. ++L->length;
82. return OK;
83.}
第63行 L->length >= L->listSize,顺序表的长度跟它的存储容量能在一起比较吗?不是一个领域的定义吧?不太理解这两者的区别。
ElemType 实际上是Int,为什么不直接写Int?