單向迴圈鍊錶

2021-06-05 10:07:26 字數 2143 閱讀 1247

// 單向迴圈鍊錶.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include "clinklist.h"

using namespace std;

int _tmain(int argc, _tchar* argv)

;int n=5;

/*測試空鍊錶*/

clinklistclist_a;

clist_a.printlist();

/*測試用陣列初始化的鍊錶*/

clinklistclist(a,n);

cout << "用陣列初始化後:";

clist.printlist();

/*刪除操作*/

clist.delete(4);

cout << "刪除後:" ;

clist.printlist();

/*插入操作*/

clist.insert(100,5);

cout << "插入後:" ;

clist.printlist();

int i=6;

cout << "位置" << i << "的元素等於: " << clist.get(i) << endl;

int x=100;

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

return 0;

}template

struct node

;template

class clinklist

;template

clinklist::clinklist()

template

clinklist::clinklist(t a, int n) //尾插法

}template

void clinklist::printlist()

else

cout << endl;}}

template

void clinklist::delete(int i)

else

if(p==rear) throw "位置錯誤,沒有這麼多元素";

if(p->next==rear)//刪除rear節點的情況

else         //刪除一般節點的情況}}

template

void clinklist::insert(t x,int i)

if(i==1)

else

if(p==rear->next)

//if(p==rear) cout<< "haha "; 

node*s = new node;

s->data = x;

s->next = p->next;

p->next = s;

if(p==rear) rear=s;}}

template

t clinklist::get(int i)

if(p==rear)

return p->next->data;

}template

int clinklist::locate(t x)

if(p==rear->next)

return j;

}錯誤和心得:

1,void clinklist();

void clinklist(t a, int n);

2,clinklist clist(a,n);         報錯  「error:缺少 類模版"clinklis"t 引數列表」

應改為clinklistclist(a,n);   這也說明了模版的型別引數化。

3,下面建構函式的紅色字型部分沒寫,導致位置衝突

clinklist::clinklist(t a, int n) //尾插法

}4,在處理哨兵時,應該採取「臨界法」,把第乙個不符合的情況作為哨兵,比如

t clinklist::get(int i)

if(p==rear)

return p->next->data;

}執行結果:

迴圈單向鍊錶

typedef struct list list 初始化乙個迴圈單向鍊錶 void list init list head 判斷鍊錶是否為空 int is list empty list head 往迴圈單向鍊錶中插入乙個元素 prev 在prev元素後面插入 void list insert li...

單向鍊錶迴圈

include include include include includetypedef struct looplink looplink,plooplink 設定結點物件,包含兩個成員,nvalue和指向下乙個物件的指標pnext plooplink create phead nvalue 9...

單向迴圈鍊錶

帶頭節點 指向頭節點的指標header不能改變位址!每次輸入資料都要重新找回最後乙個節點,在輸出資料時,要把最後乙個節點的next指向null include include typedef struct link node void builddoublelink node header else...