[問題] 雙向循環鏈結串列,新增一節點問題

看板C_and_CPP (C/C++)作者 (嘿嘿...)時間16年前 (2010/01/08 14:22), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) temp->rlink->llink=item; 希望得到的正確結果: 應該沒錯才對>"< 程式跑出來的錯誤結果: dereferencing pointer to incomplete type 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include <stdlib.h> #include <stdio.h> int main(void) { typedef struct { int data; struct dlNode * llink; struct dlNode * rlink; }dlNode; typedef dlNode * Node; //先建立3個node int i=1; Node head,tail,a,b,c,temp; a=(Node)malloc(sizeof(dlNode)); b=(Node)malloc(sizeof(dlNode)); c=(Node)malloc(sizeof(dlNode)); tail=c; a->data=100; b->data=200; c->data=300; a->rlink=b; b->rlink=c; c->rlink=a; a->llink=c; b->llink=a; c->llink=b; //search到200的節點,然後在其節點後加入新節點210 temp=tail->rlink; do { if(temp->data==200) { Node item; item=(Node)malloc(sizeof(dlNode)); item->data=210; item->llink=temp; item->rlink=temp->rlink; temp->rlink->llink=item; //出現 dereferencing pointer to incomplete type temp->rlink=item; break; } temp=temp->rlink; }while(temp !=tail->rlink); system("pause"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.65.71.253

01/08 14:43, , 1F
你的宣告typedef struct {} dlNode;
01/08 14:43, 1F

01/08 14:44, , 2F
一般好像是struct dlNode {};
01/08 14:44, 2F

01/08 14:44, , 3F
然後再typedef struct dlNode dlNode;
01/08 14:44, 3F

01/08 14:47, , 4F
你這樣好像只會有dlNode而沒有struct dlNode
01/08 14:47, 4F

01/08 14:49, , 5F
不然就是typedef struct dlNode {...} dlNode;
01/08 14:49, 5F

01/08 14:49, , 6F
這和雙向連結串列其實沒什麼關係的樣子
01/08 14:49, 6F

01/08 17:32, , 7F
跟樓上的想法差不多, 印象中struct的指標要照上述宣告
01/08 17:32, 7F

01/08 17:33, , 8F
用typdef struct 的方式,好像會沒有"實體"
01/08 17:33, 8F
文章代碼(AID): #1BHiyAow (C_and_CPP)
文章代碼(AID): #1BHiyAow (C_and_CPP)