線性表 鏈式儲存結構 雙向鍊錶

2021-08-17 20:45:18 字數 1615 閱讀 8996

雙向鍊錶結點結構

既然單鏈表可以有迴圈鍊錶,那麼雙向鍊錶當然也可以有。

由於這是雙向鍊錶,那麼對於鍊錶中的某乙個結點p,它的後繼結點的前驅結點是它本身。

**實現:

s->next = p;    

s->prior = p->prior;

p->prior->next = s;

p->prior = s;

關鍵在於交換的過程中不要出現矛盾,例如第四步先被執行了,那麼p->prior就會提前變成s,使得插入的工作出錯。

**實現:

p->prior->next = p->next;

p->next->prior = p->prior;

free(p);

雙向鍊錶可以有效提高演算法的時間效能,說白了就是用空間來換取時間。

要求實現使用者輸入乙個數使得26個字母的排列發生變化,例如使用者輸入3,輸出結果:

defghijklmnopqrstuvwxyzabc

同時需要支援負數,例如使用者輸入-3,輸出結果:

xyzabcdefghijklmnopqrstuvw

**實現:

#include #include #define ok 1

#define error 0

typedef char elemtype;

typedef int status;

typedef struct dualnodedualnode,*dulinklist;

status initlist(dulinklist *l)

(*l)->next = (*l)->prior = null;

p = (*l);

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

q->data = 'a'+i;

q->prior = p;

q->next = p->next;

p = q;

}p->next = (*l)->next;

(*l)->next->prior = p;

return ok;

}void caesar(dulinklist *l,int i)while(--i);

}if(i<0)while(++i);

}}int main()

printf("\n");

return 0;

}

《資料結構 線性表》鏈式儲存 雙向鍊錶

一 雙向鍊錶定義 在單鏈表的每個節點中,在設定乙個指向前驅節點的指標域 所以在雙向鍊錶結點都有兩個指標域,乙個指向前驅位置,乙個指向後驅位置。二 雙鏈和單鏈的區別 相同 由於雙向鍊錶是從單向鍊錶衍生出來的,所以在 計算鍊錶長度 查詢元素位置 查詢元素中,都只需要涉及乙個方向的指標就可以,在這方面,他...

資料結構 線性表鏈式儲存結構 雙向鍊錶

巨集定義 define failed 0 define success 1 typedef struct dnode dlinknode 建立鍊錶 頭插法 dlinknode createdlinklistf int a,int n return l 尾插法 dlinknode createdlin...

線性表鏈式儲存結構

include include 線性表鏈式儲存結構 typedef struct lnodelnode,linklist int initlist linklist l 初始化 int endinsert linklist l,int e p next s return 1 末尾插入元素 int g...