問題:編寫演算法實現建立乙個帶結點的含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指標 插入操作 刪除操作 雙向鍊錶的新操作 獲取當前游標指向的資料元素 將游標重置指向鍊錶中的第乙個資料元素 將游標移...
線性表的鏈式表示 鍊錶詳解
二 迴圈鍊錶 三 雙向鍊錶 四 總結 五 參考文獻 線性表的鏈式儲存結構即鍊錶,其特點是用一組任意的儲存單元儲存線性表的資料元素,這組在記憶體中的儲存單元可以是連續的,也可以是不連續的。鍊錶,顧名思義,是由各個節點鏈結。節點的資訊包含資料域和指標域。資料域儲存元素資訊,指標域用來儲存直接後繼節點的位...