線性表的問題 實在找不出錯誤在哪

2025-03-25 20:00:15 字數 1553 閱讀 4702

1樓:網友

*路過說說,望多琢磨,如有不對之處,歡迎來個訊息共同**!*/

#include ""

#include ""

#define max 10

typedef struct sqlist{

char elem[max];

int len;

sqlist;

sqlist *creat(int n);

int insert_sq(int i,char x,sqlist *l);

int main(){

char x;

int n = 10; /假設開始建立的連結串列長為10*/

sqlist *l = null;

l = creat(n);

x = a'; x沒有初始化*/

insert_sq(3,x,l);

這裡你應該釋放剛才動態申請的記憶體,也就是銷燬連結串列,否則造成記憶體洩露 */

return 0; /你沒有讓main返回值*/

sqlist *creat(int n)/*按你的邏輯,應該返回或扒連結串列頭*/

sqlist *l = null; /建衫隱昌議習慣上,定義指標後,應該賦值為null,避免隱蔽錯誤*/

int i;

l = sqlist*)malloc(sizeof(sqlist));沒有給連結串列申請空間*/

l->len=n; /申請空間後,可進行後面的操作了。

for(i=0;i攜慶len;i++)

scanf("%c",&l->elem[i]);

return l; /返回連結串列頭指標,否則會丟失連結串列,記憶體洩露*/

int insert_sq(int i, char x,sqlist *l){

sqlist *l; 無用了,應該由函式引數傳近來,插入是在已建立的連結串列裡進行*/

int j;

if(i<1||i>l->len+1) return 0;

if(l->len==max-1) return -1;

for(j=l->len;j>=i;j--)

l->elem[j+1]=l->elem[j];

l->elem[i]=x;

l->len;

return 1;

2樓:網友

我不想看程式,可是你的習慣不好,c++最好不要定義巨集,容易出錯。你看看是不是。

線性表錯誤答案是?

3樓:流年淡忘憂傷

是d連結串列通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一起的。

每個結點只有乙個鏈域的連結串列稱為單連結串列。

4樓:網友

c.順序表需要連續的記憶體空間,而連結串列的空間是隨機分配的,它可以把不連續的空間聯絡起來使用,所以順序表的空間利用率不高於連結串列。

5樓:衷飛

c.順序儲存的缺點:儲存空間是預分配的,不靈活,空間浪費。

6樓:網友

這個題目出的有問題,應該都對。

對於長度為n的線性表,在最壞情況下,下列各排序法所對應的比較

選擇d。快速排序是拿比較向鄰1個單元的大小,並按一定方向排列,大小方向不符合的就把2個單元交換,依次比較下去。例如 12,23,34,45,56,67,這樣就確定了乙個最大 最小 的單元,並把它排列一端,交換次數為n 1,然後在除了最值外的n 1個單位中繼續排列,出來第2個最大 最小 值,次數為n ...

c語言線性表的實現中的頭插法和尾插法

頭插法建表 演算法 p listnode malloc sizeof listnode 生成新結點 p data ch 將讀入的資料放入新結點的專資料域中p next head head p 尾插法建表屬 演算法 p listnode malloc sizeof listnode 生成新結點 p d...

設有一元素為整數的線性表La1,a2,a3an

上面是核心 和乙個隨手寫的簡單測試,注意看數字15,左邊都比15小,右邊都比15大。你的這個題目其實就是快速排序演算法的一部分,有興趣可以去看看快排的原理,我這個函式就是從之前寫的快排拿出來小改了一下的。下面是完整的測試函式,隨手寫的,可能不太優雅 include using namespace s...