作者cyBochu (drinktea)
看板C_and_CPP
標題[問題] 串鍊鏈結,新增節點函數問題
時間Sat Mar 23 11:43:05 2019
各位高手們好,小的在自修串鍊連結遇到以下問題
在想如何寫一個"單向鏈結串列"的新增函數
以下是我參考的書籍所寫的程式碼
-----------------我是分隔線-----------------------------------
struct student {
char name[20];
int score;
struct student *next;
}
struct student *ptr,*head,*current,*prev;
void insert_func(void){
ptr = (struct student *)malloc(sizeof(struct student));
ptr->name =(char *)”John”;
ptr->score = (int *) 85;
prev = head;
current = head->next;
while((current != NULL) && (current->score > ptr->score) ){
prev = currect;
current = current->next;
}
ptr->next = current;
prev->next = ptr;
}
---------------------我是分隔線-----------------------------------------
以上是串鍊連結的程式碼,目的是"新增node並排序"。
我想請教 insert_func()中的程式碼,指標 prev = head 之後的部分看不懂,想求大神
解釋。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.55.180
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1553312592.A.D6A.html
→ sarafciel: 你有把你寫的code丟進編譯器編過嗎? 03/23 13:45
推 james80351: 這程式編譯不會過吧... 03/23 23:08
→ cyBochu: 我是擷取其中一部分拉,重點是insert_func我看不懂,我沒 03/24 03:38
→ cyBochu: 把main()加進來 03/24 03:39
推 dces4212: prev=head之後,current取得list的第二個節點,接下來只 03/24 04:25
→ dces4212: 要list還沒走到尾巴並且current存的節點的成績大於新節 03/24 04:25
→ dces4212: 點的成績,current就會持續往下個節點走訪,一旦while 03/24 04:25
→ dces4212: 條件不成立後,代表找到要插入新節點的位置,即開始進 03/24 04:25
→ dces4212: 行插入新節點的動作,概念上差不多是在做這些事 03/24 04:25
→ loveme00835: 你這是什麼程式語言? 03/24 04:57
→ Lyu7: 樓上,看起來應該是C 03/24 09:09
推 IhateOGC: 把新增的分數自動排序到list 03/24 11:49
→ Gway: Malloc 完對node的init 編譯會報錯吧...... 03/24 13:03
推 Gway: Char Array 沒在宣告時初始化 後續應該用strcpy 無法直接ass 03/24 13:06
→ Gway: ign 另外 int scope 為啥要轉成 pointer 再給值呢? 03/24 13:06
→ Gway: 程式插入第一個node不會比較 邏輯怪怪的 如果想當head node 03/24 13:13
→ Gway: 不建議用一樣的structure 03/24 13:13