作者:
kdok123 (小天)
2014-09-22 23:21:03typedef int elemType;
struct node{
elemType data;
node *next;
};
node *test(node *head, int length)//這裡傳入的head是鏈表的頭指針
{
node *mat = new node[length];
for(int i=0; i<length; i++)
{
mat = head;
if(!head->next)
break;
head= head->next;
mat++;
}
//上面這個for迴圈是想讓new出來的每個指標指向list裡各個node的位置
for(int i=0; i<length; i++)
{
if(i==length-1)
{
mat->next = NULL;
break;
}
mat->next =
node[length] 怎麼看都不像 pointer array
我猜你mat想宣成pointer array 可是你宣pointer
作者:
kdok123 (小天)
2014-09-23 09:09:00node[length]不是pointer array,是node array沒錯!因為不想宣告double pointer所以才這樣寫這邊是想讓mat的指標指向對的位置,接著在對他改值
作者:
bluesoul (å¿™æ»ä½ è€çˆ¸)
2014-09-23 10:15:00head是用來作什麼呢?mat = head; 這行很奇怪
作者:
kdok123 (小天)
2014-09-23 11:25:00剛剛加入註釋了! head是鏈表的頭指針
你是不是誤會什麼了, mat = head 不會置換 node[] 基底原本 mat 指向 node[], 你的動作是改成指向 head
作者:
kdok123 (小天)
2014-09-23 15:07:00恩恩! 我知道不會置換node,我只是想讓他指向head並改head的next而已,為什麼這樣會出錯呢?
那你的 head 基底++ 之後會指到什麼?不過也不用討論這個, array 裡放的非 pointer 要怎麼指
作者: jackylu63 (J) 2014-09-23 16:52:00
我超喜歡用Linux kernel list.h,他是個雙向鏈結X沒有反轉的問題