將連結串列大小排序為何我實現不了啊

2021-05-04 18:24:47 字數 1727 閱讀 8019

1樓:匿名使用者

兩個問題:

1、sort函式實現不對,給你改了一下(此處排序用的是冒泡!另:**盡量不要用goto語句!):

//以下函式,無法實現,執行後為何沒有printf 顯示排列後的大小呢

void sort(pnode phead)

pn = pn->pnext;//移位

}pf = pf->pnext;

}pnode p = phead->pnext;

while (null != p)

printf("\n");

}2、main中呼叫sort時,不應該是void sort(pnode phead);,這只是宣告,呼叫應該如下:

sort(phead);

完整**如下:

# include

# include

# include

typedef struct node

node, *pnode; //node等價於struct node pnode等價於struct node *

pnode create_list(void); //建立連結串列

void sort(pnode phead);

int main(void)

//以下函式,無法實現,執行後為何沒有printf 顯示排列後的大小呢

void sort(pnode phead)

pn = pn->pnext;//移位

}pf = pf->pnext;

}pnode p = phead->pnext;

while (null != p)

printf("\n");

}pnode create_list(void)

pnode ptail = phead;

ptail->pnext = null;

printf("請輸入您需要生成的連結串列節點的個數: len = ");

scanf("%d", &len);

for (i=0; idata = val;

ptail->pnext = pnew;

pnew->pnext = null;

ptail = pnew;

}return phead;

}-------------------------------

測試結果:

請輸入您需要生成的連結串列節點的個數: len = 7

請輸入第1個節點的值: 6

請輸入第2個節點的值: 5

請輸入第3個節點的值: 7

請輸入第4個節點的值: 4

請輸入第5個節點的值: 8

請輸入第6個節點的值: 3

請輸入第7個節點的值: 9

3 4 5 6 7 8 9

press any key to continue

2樓:匿名使用者

盡量少用goto

程式沒怎麼看懂,道理給你說一下

排序,在c中基本上用的就是幾個排序方式,冒泡,選擇等**都是現成的,主要是改幾個地方而已

一般是陣列的排序,交換兩個單元的數值

那麼連結串列也是一樣,基本原理也是交換兩個單元的數值關鍵是怎麼交換,其實連結串列只要知道只想這個單元的指標,也就是那個next指標

比較完成後,符合條件交換這個指標即可

怎麼來獲取

其實這個也不難,就是比的時候,用

next->data來比較,交換next地值即可

將新結點插入連結串列

struct student insert struct student head,struct student new else 如果原來連結串列非空,則將新結點插入適當位置,使新連結串列資料仍保持公升序 if new num p num else 如果之前找插入位置的迴圈是因為已經找到連結串列尾...

中國各省面積大小排名

排名次 各省市區直轄市 面積 萬平方公里 1 新疆維吾爾自治區 166 2 自治區 122.8 3 內蒙古自治區 118.3 4 青海省 72.23 5 四川省 48.14 6 黑龍江省 45.48 7 甘肅省 45.44 8 雲南省 38.33 9 廣西壯族自治區 23.6 10 湖南省 21.1...

super junior m成員按年齡大小排列

嗯 問的是sjm 樓上的你回sj幹啥。嗯從小到大 henry 圭賢 厲旭 始源 始源真實生日是86年4月的 比東海大 但是官方給的是87年2月 東海 周覓 銀赫 晟敏。奎賢 基範 麗旭 始源 東海 恩赫 晟敏 神童 強仁 藝聲 韓庚 希澈 李特。是從小到大的順序。super junior 成員的年齡...