雙向迴圈鍊錶

2021-06-05 14:19:48 字數 1517 閱讀 2669

#include "stdafx.h"

#include "blinklist.h"

#include using namespace std;

int _tmain(int argc, _tchar* argv)

; int n;

blinklistblist(a,4);

blist.printlist();

n=3;

blist.insert(100,n);

cout << "在位置" << n << "插入後:" ;

blist.printlist();

n=3;

blist.delete(n);

cout << "在位置" << n << "刪除後:" ;

blist.printlist();

int x=0;

cout << "元素" << x << "位於" << blist.locate(x) << endl;

cout << "位置i處元素:" << blist.get(-1) << endl;

return 0;

}

檔案"blinklist.h"

templatestruct node;

templateclass blinklist

;templateblinklist::blinklist() }

templatevoid blinklist::printlist()

cout << endl;

}templatevoid blinklist::insert(t x,int n)

node*s = new node;

s->data = x;

s->next = p->next;

p->next = s;

s->next->prior = s;

s->prior = p; }

templatevoid blinklist::delete(int n)

else

if(p->next == front)

else

}}templateint blinklist::locate(t x)

if(p->next == front)

else

}templatet blinklist::get(int n)

else

if(p->next == front)

else

}}

錯誤及心得:1,報錯"缺少型別說明符 - 假定為 int。注意: c++ 不支援預設int"template"

templateclass blinklist

;

2,報錯:雙向鍊錶.exe 中的 0x008415d3 處有未經處理的異常: 0xc0000005: 讀取位置 0xccccccd4 時發生訪問衝突

原因:在成員函式中重新定義資料成員,導致資料成員為區域性變數。

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...

迴圈鍊錶,雙向鍊錶

迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...

鍊錶 雙向迴圈鍊錶

雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...