C 資料結構 雙鏈表 模板類

2021-07-02 23:32:16 字數 2769 閱讀 7853

#ifndef dlist_h_included

#define dlist_h_included

#includeusing namespace std;

templateclass dlist;

templateclass listnode

listnode(type d,listnode*n = null,listnode*m = null):data(d),next(n),prior(m)

{}~listnode()

{}public:

void setdata(type d)

void getdata()const

private:

type data;

listnode*next;

listnode*prior;

};templateclass dlist

~dlist()

public:

void push_back(const type &x);

void push_front(const type &x);

void show_list()const;

void pop_back();

void pop_front();

void insert_val(const type &x);

void delete_val(const type &x);

bool find(const type &x);

type length();

void clear();

void destroy(); //摧毀該順序表

void reserv(); //反轉

void sort();

protected:

listnode* buynode(type x = type())

private:

listnode*first;

listnode*last;

};templatevoid dlist::push_back(const type &x)

templatevoid dlist::push_front(const type &x)

else

first->data++;

}templatevoid dlist::show_list()const

couttemplatevoid dlist::pop_front()

}templatevoid dlist::insert_val(const type &x)

else if(last->data < s->data)

else

p=p->next;}}

}templatevoid dlist::delete_val(const type &x)

delete q;

first->data--;

}templatebool dlist::find(const type &x)

templatevoid dlist::destroy()//摧毀該順序表

templatevoid dlist::reserv() //反轉

first->next = p;

}templatevoid dlist::sort()

p = p->next;

}s = s->next;

}}#endif // dlist_h_included

#include"dlist.h"

int main()

break;

case 2:

cout<<"請輸入要插入的值(-1結束):>";

while(cin>>item, item!=-1)

break;

case 3:

mylist.show_list();

break;

case 4:

mylist.pop_back();

break;

case 5:

mylist.pop_front();

break;

case 6:

cout<<"請輸入要插入的值:>";

cin>>item;

mylist.insert_val(item);

break;

case 7:

cout<<"請輸入要刪除的值:>";

cin>>item;

mylist.delete_val(item);

break;

case 8:

cout<<"請輸入要查詢的值:>";

cin>>item;

mylist.find(item);

break;

case 9:

mylist.length();

break;

case 10:

mylist.clear();

break;

case 11:

mylist.destroy();

break;

case 12:

mylist.reserv();

break;

case 13:

mylist.sort();

break;

default:

break;}}

}

C 資料結構 雙鏈表

據說單鏈表沒有迴路,那麼雙鏈表也出現了,既包括後繼指標,又加入了前驅指標,某個元素可以尋找他上面乙個元素,也可以尋找到下乙個元素。當然雙鏈表也是鍊錶的一種。物理儲存結構 不一定是連續的儲存區域 邏輯儲存結構 邏輯上儲存是連續的 使用場景 跟單鏈表一樣,適用於對資料的大量新增和刪除元素,對訪問元素無要...

資料結構 雙鏈表

typedef struct nodenode 雙鏈表的根節點的bwd指標指向雙鏈表的最後乙個節點,fwd指標指向雙鏈表的第乙個節點,雙鏈表的value欄位為空 以下程式是將乙個值插入到乙個有序的雙鏈表中,如果鍊錶中已經有和該值相同的節點則不插入 include include typedef st...

資料結構 雙鏈表

目標 掌握雙鏈表的資料結構 來看看什麼是雙鏈表吧 雙鏈表與單鏈表的區別,單鏈表是單項的 而雙鏈表是有左右的 題目acwing 827 實現乙個雙鏈表,雙鏈表初始為空,支援5種操作 1 在最左側插入乙個數 2 在最右側插入乙個數 3 將第k個插入的數刪除 4 在第k個插入的數左側插入乙個數 5 在第k...