資料結構學習筆記 雙向鍊錶(C語言實現)

2021-08-15 17:44:55 字數 1445 閱讀 9717

像前邊寫過的鍊錶都是單向的,每乙個節點只包含資料和下乙個節點的指標,雙向鍊錶則是每個節點包含資料、上乙個節點的指標以及下乙個節點的指標。雙向鍊錶也可以是迴圈鍊錶。如下圖:

空的雙向鍊錶:

非空的雙向鍊錶:

使用雙向鍊錶時,初始化方法和插入、刪除方法都需要在單鏈表基礎上做一些改變,單鏈表的增刪只改變乙個指標變數,而雙向鍊錶需要改變兩個指標變數。插入操作如下:

定義雙向鍊錶兩個指標分別為:next、prior

s->prior=p;

s->next=p->next;

p->next->prior=s;

p->next=s;

***插入順序不能亂。

刪除操作如下:

雙向鍊錶部分**:

#include #include typedef int eletype;

typedef struct nodenode;

typedef node *linklist;

void initd(linklist *l)

}void getdele(linklist l,int index,eletype *e)

*e=p->data;

}void insertdele(linklist *l,int index,eletype e)

linklist s;

s=(linklist)malloc(sizeof(node));

s->data=e;

s->prior=p;

s->next=p->next;

p->next->prior=s;

p->next=s;

}void deletedele(linklist *l,int index)

linklist r=p->next;

r->prior->next=r->next;

r->next->prior=r->prior;

free(r);

}void displaydlinklist(linklist l)

printf("\n");

}void main()

資料結構學習筆記三 迴圈鍊錶及雙向鍊錶

一 迴圈鍊錶 首位相接的鍊錶,將單鏈表的尾指標指向表頭結點,就得到了單迴圈鍊錶,一般,在迴圈鍊錶中設定乙個頭結點,這樣空的迴圈鍊錶就是自成迴圈的頭結點表示 另外多採用 尾指標表示單迴圈鍊錶,比如尾指標是rear,則rear next next和rear分別表示頭結點和尾結點。優點 從任意結點都可以訪...

資料結構學習筆記 鍊錶

表示式的計算 表示式的計算涉及到棧的操作 對於表示式 a b c d e f 演算法 用到兩個棧,分別是符號棧和運算元棧。輸入表示式時,為了表示表示式輸入完畢,在表示式的最後加上 號,也就是說輸入的表示式為 a b c d e f 首先設定各個符號的優先順序,和 的優先順序為0,也就是最低的 和 的...

資料結構學習筆記 鍊錶

2.建立鍊錶 3.單向和雙向迴圈鍊錶 4.總結 struct list node 首先了解鍊錶的組成部分 說明 頭節點 在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點 首節點 的位址。頭結點的作用是使所有鍊錶 包括空表 的頭...