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

[轉貼]如何寫雙向的串列鍊結??

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-13 09:29:23 IP:61.220.xxx.xxx 未訂閱
作者:過路人 e-mail:不詳 資料來源:程式設計俱樂部 參考網址:http://programmer.eforum2000.net/pc2020v5/forum/ShowOneText.asp?board_pc2020=c&id=2316&mode=keyword&szKeyword=如何寫雙向的串列鍊結??&parentid=2311&selectmethod=subject# typedef struct tagLIST { struct tagLIST *prev; // 前一個 LIST struct tagLIST *next; // 下一個 LIST // 其他資料 } LIST; LIST *head, *tail; void ListInit() { head = NULL; tail = NULL; } LIST *ListAlloc() // 配置串列資料 { LIST curr = NULL; if(!head) { curr = (LIST*)malloc(sizeof(LIST)); // 配置記憶體 head = curr; // LIST 開頭 head->prev = NULL; // 前一個 LIST head->next = NULL; // 下一個 LIST tail = head; // LIST 尾端 } else { curr = (LIST*)malloc(sizeof(LIST)); // 配置記憶體 tail->next = curr; // 下一個 LIST 加到尾端 curr->prev = tail; // 前一個 LIST curr->next = NULL; // 下一個 LIST tail = curr; // LIST 尾端 } return curr; } void ListFree(LIST * curr) // 釋放串列資料 { if(curr == head) head = curr->next; // LIST 開頭,LIST head指到下一個LIST else if(curr == tail) tail = curr->prev; // LIST 尾端,LIST tail指到前一個LIST if(curr->prev == NULL && curr->next == NULL) // LIST curr 前後都沒有 LIST,LIST head、LIST tail 設成 NULL { head = NULL; tail = NULL; } else // LIST curr 前後的LIST重新串聯 { if(curr->prev) curr->prev->next = curr->next; if(curr->next) curr->next->prev = curr->prev; } free(curr); // 釋放記憶體 } void ListProc() // 串列處理 { LIST *curr, *next; curr = head; while(curr) { next = curr->next; // 處理LIST curr = next; } }
系統時間:2024-11-23 3:39:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!