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次不輸出 輸出一個回車...