c語言順序表執行錯誤

時間 2022-08-11 03:30:05

1樓:匿名使用者

從你的螢幕輸出可以看出來。最後一次操作選擇了1.就是呼叫insert

是在insert的函式裡出錯的。

你從螢幕輸入1 2

告訴函式要在第一個元素之前插入2這個值。

看這裡:

q=&(l.elem[i-1]); //q指向要插入的位置

for(p=&(l.elem[l.length-1]);p>=q;--p) //p指向最末一個元素,結束條件是 p>=q

*(p+1)=*p; // 從最後一個元素開始依次後移,

*q=e;

++l.length;

這些**本身是沒問題的。

但是請看你的init函式

.length=0;

初始化的時候 length是0,也就是說你的順序表雖然開闢了空間,卻沒有賦值。

但是卻又在insert函式裡這麼用l.elem[l.length-1])

相當於 訪問了 elem[-1] 不出錯就怪了。

在init函式裡給elem賦幾個值吧,把length的設定為值的個數。

不過我看你在insert函式裡檢查了 i和 length的關係。

if(i<1||i>l.length+1)

return error;

但是這麼檢查不對啊。 應該是i >= l.length+1

也就是說只修改這裡程式就不會出錯了。

2樓:匿名使用者

下面是我寫的順序表就地轉置的程式,編譯正確,但是執行時輸入第一個資料就明顯的是記憶體洩漏!需要具體講的。請把你的原始碼複製出來,謝謝

3樓:匿名使用者

函式的引數是不是應該為sqlist *&l

c 順序表程式,編譯沒有錯誤,但是執行時就是不行,求指教

樓主 type data 是一個結構體指標,你想把它當做結構體指標陣列來用。l.data l.size item 我根據你程式要實現的意思,提出幾種修改建議 1 修改結構體成員type data 為陣列 type data maxsize 原 typedef struct seqlist 修改為 t...

c語言錯誤問題,c語言執行出錯什麼原因

xzx.c 6 error c2143 syntax error missing before type xzx.c 7 error c2065 p undeclared identifier xzx.c 7 warning c4047 int differs in levels of indire...

c語言while的詳細執行順序

while i 在i減一前不為0則迴圈,這意味著會執行10次,並且這10次,i的值分別是 9,8,2,1,0所以,j就分別是 1,2,3,8,9,10while j 在j減一前不為0則迴圈,這意味著會列印j個 於是,最後結果是 第一次 i 10 j 10 10即j 0 所以第1次不輸出 輸出一個回車...