陣列和鍊錶實現Stack

2021-10-21 14:27:09 字數 1449 閱讀 9069

需要先開闢一定的理論空間capacity的陣列

當實際空間size大於理論空間capacity時,需要重新分配空間大小

通過size來指向棧頂

壓棧就是將新的數值放在size處,然後size++

出棧就是將size處的數值返還,size--

#pragma once

//棧的兩種實現方法之陣列實現

template class arraystack

;template arraystack::arraystack(int cap)

:size(0), capacity(cap), arr(nullptr)

template arraystack::~arraystack()

}templatet arraystack::top()

templatet arraystack::pop()

templatevoid arraystack::push(t data)

arr[size++] = data;

}templatebool arraystack::isempty()

templateint arraystack::getsize()

鍊錶的實現需要首先建立乙個哨兵節點,即phead=null,該處設為ptop,ptop一直指向頭

壓棧相當於鍊錶的頭插法,每次都分配空間,然後將新的數值插在ptop的後面,size++

出棧就是將ptop指向的下乙個有數值的點彈出,size--

#pragma once

//棧的兩種實現方法之鍊錶實現

template struct node

node(t data):value(data) };

template class liststack

;template liststack::liststack()

template liststack::~liststack()

ptop = nullptr;

}templatet liststack::top()

//從鍊錶頭部刪除

templatet liststack::pop()

}//類似於鍊錶的頭插法

templatevoid liststack::push(t data)

templatebool liststack::isempty()

templateint liststack::getsize()

#include //#include "arraystack.h"

#include "liststack.h"

using namespace std;

int main()

system("pause");

}

佇列(陣列實現和鍊錶實現)

1.概念 具有一定操作約束的線性表 2.特點 1 只能在一端插入 入隊 另一端刪除 出隊 2 先進先出。3.儲存實現方式 陣列 鍊錶。4.基本操作 1.陣列實現 迴圈陣列 注意 1 普通的順序儲存的陣列用來實現佇列時,存在乙個問題 當rear 記錄隊尾的變數 到達maxsize 1時,不能確定佇列是...

陣列實現鍊錶

測試類 public class listtest 再新增元素 list.add 100 list.modify 10,100 取出元素 for int i 0 i list.size i 建立乙個陣列佇列 author 閉耀堯 public class mylist 將心陣列的值賦給初始陣列的最後...

用陣列和鍊錶實現棧

完成乙個棧總共需要完成以下操作 初始化入棧 出棧檢視棧頂元素 檢視棧的容量 清空棧。首先是簡單的,用陣列做的,會有越界的可能。include include typedef struct stack stack stack s 生成棧 void initstack 入棧,push void push...