數(shù)據(jù)庫使用C++數(shù)據(jù)結(jié)構(gòu)
在編寫代碼時(shí),堆棧是最常用的C++數(shù)據(jù)結(jié)構(gòu),它的概念簡(jiǎn)單,編寫也比較簡(jiǎn)單,現(xiàn)在舉這么個(gè)例子,桌子上有堆成一堆的6本書,你想增加一本,應(yīng)該怎么做?只要把書放在頂端就可以了。
如果你想從這堆書中取出第3本呢?你只要一本接著一本把書移到頂端,直到第3本書處在頂端。然后取走第3本書,并使其他處在頂端。
你已經(jīng)注意到我使用頂端這個(gè)詞語。沒錯(cuò),頂端(棧頂)對(duì)于堆棧至關(guān)重要的。堆棧只允許從頂端加入數(shù)據(jù),出棧/退棧也是從棧頂。就是這么簡(jiǎn)單。
那什么情況使用堆棧?堆棧被用在每一個(gè)進(jìn)程中。每一個(gè)進(jìn)程都一個(gè)堆棧,數(shù)據(jù)和地址從堆棧中被取出來/添加進(jìn)來。棧頂規(guī)則在這里也符合。
ESP Register 添加一個(gè)指針,指向棧頂。無論如何,解釋進(jìn)程中的堆棧怎么工作,已超出本教程范圍,讓我們開始寫C++數(shù)據(jù)結(jié)構(gòu)。在開始之前,請(qǐng)大家記住一些堆棧術(shù)語。向堆棧插入新元素成為入棧,從堆棧中刪除元素成為出棧。
- #include
 - using namespace std;
 - #define MAX 10 // MAXIMUM STACK CONTENT
 - class stack
 - {
 - private:
 - int arr[MAX]; // Contains all the Data
 - int top; //Contains location of Topmost Data pushed onto Stack
 - public:
 - stack() //Constructor
 - {
 - top=-1; //Sets the Top Location to -1 indicating an empty stack
 - }
 - void push(int a) // Push ie. Add Value Function
 - {
 - top++; // increment to by 1
 - if(top
 - {
 - arr[top]=a; //If Stack is Vacant store Value in Array
 - }
 - else
 - {
 - cout<<"STACK FULL!!"<
 - top--;
 - }
 - }
 - int pop() // Delete Item. Returns the deleted item
 - {
 - if(top==-1)
 - {
 - cout<<"STACK IS EMPTY!!!"<
 - return NULL;
 - }
 - else
 - {
 - int data=arr[top]; //Set Topmost Value in data
 - arr[top]=NULL; //Set Original Location to NULL
 - top--; // Decrement top by 1
 - return data; // Return deleted item
 - }
 - }
 - };
 - int main()
 - {
 - stack a;
 - a.push(3);
 - cout<<"3 is Pushed\n";
 - a.push(10);
 - cout<<"10 is Pushed\n";
 - a.push(1);
 - cout<<"1 is Pushed\n\n";
 - cout<
 - cout<
 - cout<
 - return 0;
 - }
 
我們可以很清楚的看到***入棧的數(shù)據(jù)***個(gè)出棧。這就是為什么堆棧被成為L(zhǎng)IFO(后進(jìn)先出,Last In First Out)。我猜你也明白為什么了。讓我們看看如何編譯、執(zhí)行此程序的。我們首先創(chuàng)建一個(gè)叫top的變量,使它處在棧頂位置。賦值-1,表示堆棧是空的。當(dāng)有數(shù)據(jù)輸入,top自動(dòng)加1,并把數(shù)據(jù)存入arr數(shù)組中。對(duì)于這個(gè)C++數(shù)據(jù)結(jié)構(gòu)有一個(gè)缺點(diǎn)。我們最多只能放10個(gè)元素。
【編輯推薦】















 
 
 




 
 
 
 