C 棧的順序儲存和鏈式儲存的實現

2021-07-04 02:23:50 字數 2243 閱讀 1078

棧是最常見的資料結構,其特點是後進先出(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...