迴圈雙向鍊錶的建立方法 最簡單的迴圈雙向鍊錶

2021-06-14 18:59:21 字數 843 閱讀 3489

首先講迴圈鍊錶,簡單來說就是讓鍊錶首尾相連,形成乙個環,因為一般的鍊錶都是單向的,任意給出的乙個節點是不能訪問前面的鏈節,這就導致了單向鍊錶的侷限性,迴圈鍊錶從一定程度上來說就解決了這一問題,通過表頭指標的移動,因為環的特性,可以訪問完整個鍊錶;

但是我們不禁會想,如果只是為了訪問已知鏈節的前乙個節點,通過迴圈雖然達到了訪問的目的,但是走遍整個鍊錶豈不是太花費時間了麼,就好比北京——天津——上海——北京的路線,從天津出發前往北京,需要先跑去中國南邊的上海,豈不是自己找罪受,所以,這裡引入了雙向鍊錶。

雙向鍊錶和單向鍊錶的建立方法是類似的,只是加入了乙個*front指標記錄前乙個鏈節的位址,這和*next指標的作用恰恰相反,同樣,next實現的是鍊錶的單向,反之,front實現的就是鍊錶的逆向,通過指標的滑動訪問鍊錶這個道理是通用的

//雙向鍊錶的建立與資料讀取

#include

#include

struct node

;int main()

p1->next=head;//將鏈尾與鏈頭連線起來,形成迴圈

p2=head->next;

printf("鍊錶的正向輸出:");

while(p2!=head)

printf("\n");

printf("鍊錶的逆向輸出");

while(p1!=head)

printf("\n");

printf("鍊錶的迴圈輸出:");

p2=head->next;

for(i=0;i<20;i++)

}printf("\n");

free(p2);

return 0;

}

雙向迴圈鍊錶的簡單操作

最近看了linux核心 list.h發現大部分都是鍊錶的一些操作,所以就把雙向迴圈鍊錶的一些簡單操作寫了寫,結果發現什麼東西還是要經常練,不然就生疏了 主要實現了雙向鍊錶的增 刪 改 查 排序 及雙向遍歷。原始碼如下 include include include include typedef s...

雙向迴圈鍊錶的建立及操作

專案名稱 雙向迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.6.19 學習目標 判空 求長 獲取元素位置 返回某個位置的元素 插入元素 刪除元素 清空鍊錶 銷毀鍊錶 注意事項 1.測試所有功能是否正常 include include define ok 1 def...

雙向迴圈鍊錶的建立 查詢 新增 刪除

雙向迴圈鍊錶的建立 查詢 新增 刪除 include include typedef struct lnodelnode,dlinklist 尾插法建立雙向鍊錶 dlinklist create dlinklist l,int n return l void menu 獲取雙向迴圈鍊錶中某一元素的值...