四 棧和佇列

2022-09-19 06:45:12 字數 2000 閱讀 7782

棧和佇列都是受限的線性表,棧只能從一端進出,佇列只能一端進一端出

棧有兩個端,表尾端稱為棧頂(top),表頭端稱為棧底(bottom),不含元素的空表稱為空棧

原則:後進先出

順序棧利用順序儲存結構實現棧,這指標top表示棧頂元素在順序棧中的位置,設base表示棧底元素的位置

實現

//順序棧

//初始化後,base始終指向棧底,若base==null,表明棧結構不存在。top初始

//指向棧底,表明空棧,每當有元素入棧時top++,出棧時top--

#includeusing namespace std;

#define maxsize 3

class orderedstack;

~orderedstack(){};

};void initstack(orderedstack &s);

~linkedstack(){};

};typedef linkedstack * linkpoint;

void initstack(linkpoint &s)

void push(linkpoint &s,int e)

void pop(linkpoint &s,int &e)

void getelem(linkpoint &s)

delete p;

}int main()

棧的應用

經典演算法:計算表示式的值

1.初始化兩個棧,運算元棧和運算子棧

2.若掃瞄到運算元,壓入運算元棧

3.若掃瞄到運算子或界限符(主要是"()"),則比對運算子棧頂與掃瞄到的運算子或界限符的優先順序,如果棧頂符號的優先順序大於掃瞄的,則彈出運算子棧,運算元棧彈出兩個值,按照彈出的運算子進行運算後自此壓入運算元棧。

4.掃瞄到字元結尾,將運算元棧頂元素彈出就是結果

工具:c++stack庫

stack

sx;

t為資料型別,sx為變數名,建立棧

函式:s.empty(); //如果棧為空則返回true, 否則返回false;

s.size(); //返回棧中元素的個數

s.top(); //返回棧頂元素, 但不刪除該元素

s.pop(); //彈出棧頂元素, 但不返回其值

s.push(x); //將元素壓入棧頂

實現

//表示式求值

#include#includeusing namespace std;

stackschar;//運算子棧

stacksdouble;//運算元棧

int getindex(char operat)

return index;

}char getpriority(char operat1,char operat2),,,

,,,,

};int index1=getindex(operat1);

int index2=getindex(operat2);

return priority[index1][index2];//這裡沒有異常處理,當index=-1

}double calculate(double a,char operat,double b)

}double getanswer()else

c=getchar();

}else}}

return sdouble.top();

}int main();

void initqueue(circularqueue &q);

typedef linkedqueue * queueptr;

class linkqueue;

void initqueue(linkqueue &q)

void enqueue(linkqueue &q,int e)

void dequeue(linkqueue &q,int &e)

void gethead(linkqueue q)

}int main()

資料結構 四 棧和佇列

adt 棧 stack data 同線性表。元素具有相同的型別,相鄰元素具有前驅和後堆關係。operation initstack s 初始化操作.建立乙個空棧s。destroystack s 若棧存在,則銷毀它。clearstack s 將棧清空。stackempty s 若棧為空,返回true,...

棧和佇列 單調佇列 單調棧

講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...

大話資料結構(四) 棧和佇列

棧 一種線性表,限定只能在表尾進行插入和刪除的操作。這裡的表尾指的是棧頂,lifo結構。兩棧共享空間的資料結構一般用在兩個棧的空間需求有相反關係時,也就是乙個棧在增長時另乙個棧在縮短的情況,但是前提是兩個棧具有相同的資料型別。迭代和遞迴 迭代使用的是迴圈結構,遞迴使用的是選擇結構。遞迴必須至少有乙個...