棧是最常見的資料結構,其特點是後進先出(last in first out)也是鍊錶的特殊形式,所以和鍊錶一樣,有兩種儲存方式,第一是順序儲存的棧,方便快速讀寫資料,但是棧的長度必須先固定;第二種是鏈式儲存的棧,可以不用定義棧的長度,可以大量插入資料,如果不是物理記憶體使用完的話,可以儲存大量的資料。
首先,順序儲存的棧的實現,**如下:
#pragma once
#define maxsize 10
templateclass orderstack
;
#include "orderstack.h"
#include using namespace std;
templatebool orderstack::pop(eletype& e)
e = data[top];
--top;
return true;
}templatebool orderstack::push(const eletype& e)
++top;
data[top] = e;
return true;
}templatebool orderstack::gettop(eletype& e)
e = data[top];
return true;
}templateorderstack::~orderstack()
templateorderstack::orderstack() :top(-1)
templateint orderstack::stacklength() const
templatebool orderstack::full() const
templatebool orderstack::empty() const
templatevoid orderstack::show() const
cout << "the stack length is: " << stacklength() << endl;
cout << "the stack is: ";
for (int i = top; i >= 0;--i)
cout << endl;
}
第二,棧的鏈式儲存,**如下:
#pragma once
templateclass chainstack
}; node* top;
int length;
};
#include "chainstack.h"
#include using namespace std;
templateint chainstack::stacklength() const
// template// bool chainstack::full() const
// templatebool chainstack::empty() const
templatevoid chainstack::show() const
cout << "the stack length is " << length << endl;
cout << "the stack is ";
node* temp=top;
for (int i = 1; i <= length;++i)
cout << endl;
}templatebool chainstack::pop(eletype& e)
e = top->data;
node* temp = top;
top = top->next;
--length;
delete temp;
return true;
}templatebool chainstack::push(const eletype& e)
else
++length;
return true;
}templatebool chainstack::gettop(eletype& e)
e = top->data;
return true;
}templatechainstack::~chainstack()
}templatechainstack::chainstack() :length(0), top(nullptr)
棧的順序儲存實現及鏈式儲存實現
include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...
棧順序儲存 鏈式儲存
1.棧的順序儲存之動態儲存 include include define ok 1 define false 0 define true 1 define stack init size 20 儲存空間初始分配量 define stackincrement 5 儲存空間分配增量 typedef in...
C語言實現棧的順序儲存與鏈式儲存
一 實驗目的 1.深入了解棧的定義和特性。2.掌握棧的順序表示 鍊錶表示以及相應操作的實現,鞏固對這兩種結構的構造方法的掌握。3.會靈活運用棧結構解決某些實際問題。二 實驗內容 1.棧的基本操作的實現 初始化 賦值 取值 插入 刪除等 要求分別採用順序和鏈式儲存結構。順序棧源程式 include i...