全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:917
推到 Plurk!
推到 Facebook!

雙向鏈結問題

尚未結案
liyanzi
一般會員


發表:51
回覆:45
積分:19
註冊:2005-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-29 11:52:15 IP:203.68.xxx.xxx 未訂閱
各位大大~~我現在在做雙向鏈結串列    不過總會出現下列以下錯誤:    [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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-29 14:49:09 IP:61.66.xxx.xxx 未訂閱
大概是以下這樣子..不過我沒有檢查你的邏輯 , 只是讓他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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-30 00:00:42 IP:59.113.xxx.xxx 未訂閱
感謝這位bass15大大~的解答~~現在已經complier了~~ 想再請問各位大大~~能有簡單的雙向鏈結的寫法嗎?
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-30 00:38:45 IP:61.59.xxx.xxx 未訂閱
其實這樣寫已經很簡單囉... 而且新增和刪除的Code都寫好了 應該只要Call他就好了. 加油
系統時間:2024-06-19 4:10:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!