為什么maxsize需要-1啊
求助求助直接大于等于maxsize不就夠了嗎
uj5u.com熱心網友回復:
從 0開始計數uj5u.com熱心網友回復:
因為L->length是要做陣列下表的,若下表是maxsize,那么陣列越界了~uj5u.com熱心網友回復:
int a[3],實際上是a[0],a[1],a[2]uj5u.com熱心網友回復:
從0開始,線性表最后一位下標是maxsize-1,當等于時表示已經裝滿了,大于就更不用說了uj5u.com熱心網友回復:
但是長度還是3啊uj5u.com熱心網友回復:
它這里的maxsize-1不是下標啊,是個數,maxsize代表的數字不等于length嗎uj5u.com熱心網友回復:
maxsize=陣列長度=length 會嗎?uj5u.com熱心網友回復:
看你下邊那句代碼
for(k=L->length;k>=i;i--)
L->elem[k+1]=L->elem[k]
如果L->length == maxsize-1;
那么
L->elem[maxsize-1+1]=L->elem[maxsize-1];
也就是
L->elem[maxsize]=L->elem[maxsize-1];
又因為elem應該是個陣列,長度為maxsize,下標最大為maxsize-1;所以上述陳述句超過了elem的長度,越界了
uj5u.com熱心網友回復:
它這里的maxsize-1不是下標啊,是個數,maxsize代表的數字不等于length嗎 從0開始,線性表最后一位下標是maxsize-1,當等于時表示已經裝滿了,大于就更不用說了
看你下邊那句代碼
for(k=L->length;k>=i;i--)
L->elem[k+1]=L->elem[k]
如果L->length == maxsize-1;
那么
L->elem[maxsize-1+1]=L->elem[maxsize-1];
也就是
L->elem[maxsize]=L->elem[maxsize-1];
又因為elem應該是個陣列,長度為maxsize,下標最大為maxsize-1;所以上述陳述句超過了elem的長度,越界了
uj5u.com熱心網友回復:
我覺得我已經說的相當清楚了。因為我沒看到你的全部代碼,我猜測那么length應該代表的是下標。。否則,如果允許length等于2的話
L->elem[2+1]=L->elem[2],不成立。。。
uj5u.com熱心網友回復:
我覺得我已經說的相當清楚了。因為我沒看到你的全部代碼,我猜測那么length應該代表的是下標。。
否則,如果允許length等于2的話
L->elem[2+1]=L->elem[2],不成立。。。
#define Elem type int;
typedef struct
{
Elem type lelm[maxsize];
int length;
}seqlist;
uj5u.com熱心網友回復:
length 是要求大于等于maxsize-1,或者大于等于maxsize,差別不大,不過是后面代碼加一,減一的問題。具體你還有看其他的代碼。
uj5u.com熱心網友回復:
length 是要求大于等于maxsize-1,或者大于等于maxsize,差別不大,不過是后面代碼加一,減一的問題。
具體你還有看其他的代碼。
uj5u.com熱心網友回復:
“不-1也可以”什么意思?????我看不懂你在說什么?如果不明白,把代碼貼出來,我可以告訴你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88711.html
標籤:C語言
上一篇:求大佬解答有關74HC595和LCD1602和DS1302的萬年歷顯示問題,仿真顯示不出來
下一篇:十進制轉換成八進制
