Re: [問題] linked list的插入、刪除(問題已解決)
※ 引述《aecho (星空下的鮪魚)》之銘言:
: 我不懂為什麼insert node需要三個…!?
: 以下是個人的看法:
: typedef struct node
: {
: int data;
: node* nextNode; ///< 我覺得這樣比較好懂這個link在做什麼
: /// 視需要可以加上 node *prevNode; 變成雙向的連結
: } NODES;
: void insertNode(NODES *node, int data)
: {
: NODES *newNode = (NODES *)malloc(sizeof(NODES));
: newNode->data = data;
: // 串連起來
: newNode->nextNode = node->nextNode;
: node->nextNode = newNode;
: }
: 這樣的話,
: 本來是 node---->nextNode 會變成
: node---->newNode---->nextNode
謝謝aecho網友特地回文討論。
不過我可能是因為用link這個字用習慣了,一時要轉成nextNode還真是有點轉不過來!
剛剛看了好久之後才懂,一直以為nextNode是一個節點……後來才發現是個指標! XD
: 那回過頭來看一下你的insertNode1
: #
: /*insertnode1(); function*/ /*新增前端的值*/
: NODES* insertnode1(NODES *head,NODES *node,int a) /*node為前端head,a為欲插在head之後的值*/
: {
: NODES *newnode; /*動態配置一個空間給新結點使用*/
: newnode=(NODES *)malloc(sizeof(NODES));
: newnode->data=a; /*設值給新結點*/
: newnode->link=node; /*設定新結點與前端節點的關係*/
: head=newnode; /*關鍵coding:"令新節點成為head"*/
: return head; /*關鍵coding:"將更改完成的head傳回去;否則,在此設定的head,將只運用於此insertnode1(); function中而已"*/
: }
: 傳入了head, node, 和a
: 我不清楚head和node之間的關係是怎麼樣,從這邊看來,link會成為
: newnode->link = node;
: 示意圖: newnode---->node---->link
您的示意圖跟我想的不太一樣噎!我的link是struct中的成員之一,
程式碼:newnode->link=node; 意思是說把newnode連結到node。
所以此行程式碼我個人的示意圖是:newnode---->node
其實head從頭到尾都象徵著一個list的開頭喔!
而node則是象徵著用searchnode();函數找到的點,
拿插在前端節點之前來說:把"想找的點(head->data)"傳入searchnode();函數中,
使searchnode();函數去run,如果找到和我們想找的點(head->data)數值為相同者,
則回報到main function中,且此點由指標node來接收,
所以程式碼為:node=searchnode(first,head->data);
而first同樣象徵著一個list的開頭喔!
: head = newnode;
: 示意圖: 這一行沒有意義…新節點不會因為這樣成為head。
因為newnode為一個插在list前端節點(node)之前的節點,
所以要令一個list中的起頭由node更改為由newnode開始,故head = newnode;
: 打到這邊… 再看你的註解…
: 我想你應該回頭去看一下關於pointer那章節的書。
: 你應該是對pointer的概念還不夠清楚吧。
: 補記:就如上一篇3F的w大說的,把address print出來看看。
: 會比較知道發生了什麼事情。
謝謝所有有回覆、推文的網友們,我會再去把書拿出來仔細詳讀一番的,
不過我今天早上到中午一直在修改此程式,到下午時已經修改好了,
目前當初那些小問題應該都已經消失or被避免掉了,而我也把coding加入更詳細的註解,
有些小地方也有修改過了,煩請各位網友如有興趣,可以前往觀看喔!謝謝各位。
新程式碼:http://nopaste.csie.org/ffa44 有任何問題歡迎找我討論。 :)
--
整個程式都是我的咖啡館,
my coding, my caf'e.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.168.55
※ 編輯: shieldsky 來自: 114.41.168.55 (11/01 20:18)
※ 編輯: shieldsky 來自: 114.41.168.55 (11/01 20:19)