鏈式表示的線性表之三 雙向鍊錶2 插入操作

2021-09-01 09:26:31 字數 1156 閱讀 4622

問題:編寫演算法實現建立乙個帶結點的含n個元素的雙向迴圈鍊錶h,並在鍊錶h中第i個位置插入乙個元素e。例如,建立乙個雙向迴圈鍊錶,元素為字元型資料,在鍊錶中第5個位置插入元素『y』,則鍊錶變為。

主要考察雙向鍊錶的基本操作,雙向鍊錶的操作與單鏈表類似,只是雙向鍊錶每個結點有兩個指標域,比單鏈表操作稍微麻煩一些。

main.cpp

#include #include #include using namespace std;

typedef char datatype;

typedef struct node

dlistnode,*dlinklist;

dlistnode *getelem(dlinklist head,int i);

void printdlist(dlinklist head);

int createdlist(dlinklist head, int n);

int insertdlist(dlinklist head,int i,char e);

int initdlist(dlinklist *head)

(*head)->next = *head;

(*head)->prior = *head;

return 1;

}int createdlist(dlinklist head, int n)

return 1;

}int insertdlist(dlinklist head, int i, char e)

s = (dlistnode*)malloc(sizeof(dlistnode));

if (!s)

s->data = e;

s->prior = p->prior;

p->prior->next = s;

s->next = p;

p->prior = s;

return 1;

}dlistnode *getelem(dlinklist head, int i)

if (p==head||j>i)

return p;

}void main()

void printdlist(dlinklist head)

cout << endl;

}

結果:

線性表4 雙向迴圈鍊錶

測試上一次介紹了單向迴圈鍊錶,這一次介紹雙向迴圈鍊錶。顧名思義,雙向迴圈鍊錶的結點中有兩個指標域,乙個指向直接後繼,乙個指向直接前驅。描述 資料域 兩個指標域 typedef int datatype typedef struct node dlinklist,dlinklist t 用malloc...

線性表的實現(四)雙向鍊錶

單鏈表的結點都只有乙個指向下乙個結點的指標 單鏈表的資料元素無法直接訪問其前驅元素 逆序訪問單鏈表中的元素是極其耗時的操作!雙向鍊錶的定義 在單鏈表的結點中增加乙個指向其前驅的pre指標 插入操作 刪除操作 雙向鍊錶的新操作 獲取當前游標指向的資料元素 將游標重置指向鍊錶中的第乙個資料元素 將游標移...

線性表的鏈式表示 鍊錶詳解

二 迴圈鍊錶 三 雙向鍊錶 四 總結 五 參考文獻 線性表的鏈式儲存結構即鍊錶,其特點是用一組任意的儲存單元儲存線性表的資料元素,這組在記憶體中的儲存單元可以是連續的,也可以是不連續的。鍊錶,顧名思義,是由各個節點鏈結。節點的資訊包含資料域和指標域。資料域儲存元素資訊,指標域用來儲存直接後繼節點的位...