看板 C_and_CPP 關於我們 聯絡資訊
各位高手們好,小的在自修串鍊連結遇到以下問題 在想如何寫一個"單向鏈結串列"的新增函數 以下是我參考的書籍所寫的程式碼 -----------------我是分隔線----------------------------------- 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