c 基本資料結構的類的用法 棧,佇列,鍊錶

2021-07-02 22:09:39 字數 3814 閱讀 5918

1.stack類

**:1)c++ stl棧stack介紹

c++ stack(堆疊) 是乙個容器類的改編,為程式設計師提供了堆疊的全部功能,——也就是說實現了乙個先進後出(filo)的資料結構。

2)c++ stl棧stack的標頭檔案為: 

#include

3)stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要的,在不指定容器型別時,預設的容器型別為deque。

定義stack 物件的示例**如下:

stacks1;

stacks2;

4)c++ stl棧stack的成員函式介紹

操作 比較和分配堆疊

empty() 堆疊為空則返回真

pop() 移除棧頂元素

push() 在棧頂增加元素

size() 返回棧中元素數目

top() 返回棧頂元素

5)例項:

#include #include using namespace std;  

int main ()

cout << endl;

return 0;

}

2.queue類

**:1)queue 模板類的定義在標頭檔案中。

2)與stack 模板類很相似,queue 模板類也需要兩個模板引數,乙個是元素型別,乙個容器型別,元素型別是必要的,容器型別是可選的,預設為deque 型別。

定義queue 物件的示例**如下:

queueq1;

queueq2;

3)queue 的基本操作有:

入隊,如例:q.push(x); 將x 接到佇列的末端。

出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。

訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。

訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。

判斷佇列空,如例:q.empty(),當佇列空時,返回true。

訪問佇列中的元素個數,如例:q.size()

4)例項:

#include #include #include using namespace std;

int main()

};bool operator < (const t &t1, const t &t2)

main()

return 1;

}輸出結果為(注意是按照z 的順序從大到小出隊的):

3 3 6

2 2 5

1 5 4

4 4 3

再看乙個按照z 的順序從小到大出隊的例子:

#include #include using namespace std;

class t

};bool operator > (const t &t1, const t &t2)

main()

return 1;

}

3.list類

**:lists將元素按順序儲存在鍊錶中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.

assign() 給list賦值 

back() 返回最後乙個元素 

begin() 返回指向第乙個元素的迭代器 

clear() 刪除所有元素 

empty() 如果list是空的則返回true 

end() 返回末尾的迭代器 

erase() 刪除乙個元素 

front() 返回第乙個元素 

get_allocator() 返回list的配置器 

insert() 插入乙個元素到list中 

max_size() 返回list能容納的最大元素數量 

merge() 合併兩個list 

pop_back() 刪除最後乙個元素 

pop_front() 刪除第乙個元素 

push_back() 在list的末尾新增乙個元素 

push_front() 在list的頭部新增乙個元素 

rbegin() 返回指向第乙個元素的逆向迭代器 

remove() 從list刪除元素 

remove_if() 按指定條件刪除元素 

rend() 指向list末尾的逆向迭代器 

resize() 改變list的大小 

reverse() 把list的元素倒轉 

size() 返回list中的元素個數 

sort() 給list排序 

splice() 合併兩個list 

swap() 交換兩個list 

unique() 刪除list中重複的元素

例項:[cpp]view plain

copy

#include 

#include 

#include 

#include 

using

namespace

std;   

//建立乙個list容器的例項listint 

typedef

list<

int> listint;   

//建立乙個list容器的例項listchar 

typedef

list<

int> listchar;   

void

main()   

cout << endl;   

//使用stl的accumulate(累加)演算法 

intresult = accumulate(listone.begin(), listone.end(),0);   

cout<<"sum="

<

cout<<"------------------"

<

//-------------------------- 

//用list容器處理字元型資料 

//-------------------------- 

//用listchar建立乙個名為listone的list物件 

listchar listtwo;   

//宣告i為迭代器 

listchar::iterator j;   

//從前面向listtwo容器中新增資料 

listtwo.push_front ('a'

);   

listtwo.push_front ('b'

);   

//從後面向listtwo容器中新增資料 

listtwo.push_back ('x'

);   

listtwo.push_back ('y'

);   

//從前向後顯示listtwo中的資料 

cout<<"listtwo.begin()---listtwo.end():"

<

for(j = listtwo.begin(); j != listtwo.end(); ++j)   

cout << char

(*j) << 

" ";   

cout << endl;   

//使用stl的max_element演算法求listtwo中的最大元素並顯示 

j=max_element(listtwo.begin(),listtwo.end());   

cout << "the maximum element in listtwo is: "

<<

char

(*j)<

}   

基本資料結構 表 棧和佇列

1 棧 後進先出 的兩種實現方式 指標和表 用指標方式實現棧的基本操作 createstack void h檔案 ifndef stack h struct node struct node typedef struct node ptrtonode typedef ptrtonode stack ...

基本資料結構 佇列

佇列實現的是一種先進先出 first in,first out,fifio 的策略,佇列中的插入的操作稱為入隊 enqueue 佇列的刪除操作稱為出隊 dequeue 定義乙個陣列來實現佇列 public class queue public queue int n public boolean i...

基本資料結構 棧

基本資料結構 棧 一.線性資料結構 我們從四個簡單但重要的概念開始研究資料結構。棧,佇列,deques 雙向佇列 列表是一類資料的容器,它們資料元素之間的順序由新增或刪除的順序決定。一旦乙個資料元素被新增,它相對於前後元素一直保持該位置不變。諸如此類的資料結構被稱為線性資料結構。線性資料結構有兩端,...