像前邊寫過的鍊錶都是單向的,每乙個節點只包含資料和下乙個節點的指標,雙向鍊錶則是每個節點包含資料、上乙個節點的指標以及下乙個節點的指標。雙向鍊錶也可以是迴圈鍊錶。如下圖:
空的雙向鍊錶:
非空的雙向鍊錶:
使用雙向鍊錶時,初始化方法和插入、刪除方法都需要在單鏈表基礎上做一些改變,單鏈表的增刪只改變乙個指標變數,而雙向鍊錶需要改變兩個指標變數。插入操作如下:
定義雙向鍊錶兩個指標分別為: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 首先了解鍊錶的組成部分 說明 頭節點 在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點 首節點 的位址。頭結點的作用是使所有鍊錶 包括空表 的頭...