雙向鏈結問題 |
尚未結案
|
liyanzi
一般會員 ![]() ![]() 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
各位大大~~我現在在做雙向鏈結串列 不過總會出現下列以下錯誤: [C++ Error] Unit1.cpp(43): E2141 Declaration syntax error 能請各位大大`~幫我看一下錯在哪嗎?
struct Save_roadname //Save_roadname是一個鏈結串列結構,含有兩個欄位 { String roadname ; //存放路名 Save_roadname *pre;// 存放前一節點的位址 Save_roadname *next ; //存放下一節點的位址 }; Save_roadname *save_head, *save_tail, *find_ptr, *delete_road[ 6 ] ; void ListInit() { save_head = NULL; save_tail = NULL; } List *ListAlloc() // 配置串列資料 { List curr = NULL; if(!save_head) { curr = (List*)malloc(sizeof(List)); // 配置記憶體 save_head = curr; // LIST 開頭 save_head->pre = NULL; // 前一個 List save_head->next = NULL; // 下一個 List save_tail = save_head; // List 尾端 } else { curr = (List*)malloc(sizeof(List)); // 配置記憶體 save_tail->next = curr; // 下一個 List 加到尾端 curr->pre = save_tail; // 前一個 List curr->next = NULL; // 下一個 List save_tail = curr; // Save_roadname 尾端 } return curr; } void ListFree(List * curr) // 釋放串列資料 { if(curr == save_head) save_head = curr->next; // List 開頭, head指到下一個List else if(curr == tail) save_tail = curr->prev; // List 尾端, tail指到前一個List if(curr->prev == NULL && curr->next == NULL) // LIST curr 前後都沒有 LIST,LIST head、LIST tail 設成 NULL { save_head = NULL; save_tail = NULL; } else // List curr 前後的LIST重新串聯 { if(curr->pre) curr->pre->next = curr->next; if(curr->next) curr->next->pre = curr->pre; } free(curr); // 釋放記憶體 } void ListProc() // 串列處理 { List *curr, *next; curr = save_head; while(curr) { next = curr->next; // 處理LIST curr = next; } } |
bass15
高階會員 ![]() ![]() ![]() ![]() 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
大概是以下這樣子..不過我沒有檢查你的邏輯 , 只是讓他Compiler能過..
要先宣告List成Save_roadname
struct Save_roadname //Save_roadname是一個鏈結串列結構,含有兩個欄位 { String roadname ; //存放路名 Save_roadname *pre;// 存放前一節點的位址 Save_roadname *next ; //存放下一節點的位址 }; Save_roadname *save_head, *save_tail, *find_ptr, *delete_road[ 6 ] ; typedef Save_roadname List; void ListInit() { save_head = NULL; save_tail = NULL; } List* ListAlloc() // 配置串列資料 { List* curr = NULL; if(!save_head) { curr = (List*)malloc(sizeof(List)); // 配置記憶體 save_head = curr; // LIST 開頭 save_head->pre = NULL; // 前一個 List save_head->next = NULL; // 下一個 List save_tail = save_head; // List 尾端 } else { curr = (List*)malloc(sizeof(List)); // 配置記憶體 save_tail->next = curr; // 下一個 List 加到尾端 curr->pre = save_tail; // 前一個 List curr->next = NULL; // 下一個 List save_tail = curr; // Save_roadname 尾端 } return curr; } void ListFree(List * curr) // 釋放串列資料 { if(curr == save_head) save_head = curr->next; // List 開頭, head指到下一個List else if(curr == save_tail) save_tail = curr->pre; // List 尾端, tail指到前一個List if(curr->pre == NULL && curr->next == NULL) // LIST curr 前後都沒有 LIST,LIST head、LIST tail 設成 NULL { save_head = NULL; save_tail = NULL; } else // List curr 前後的LIST重新串聯 { if(curr->pre) curr->pre->next = curr->next; if(curr->next) curr->next->pre = curr->pre; } free(curr); // 釋放記憶體 } void ListProc() // 串列處理 { List *curr, *next; curr = save_head; while(curr) { next = curr->next; // 處理LIST curr = next; } } |
liyanzi
一般會員 ![]() ![]() 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
|
bass15
高階會員 ![]() ![]() ![]() ![]() 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |