資料結構 棧的介紹以及基本操作

2021-10-14 20:02:51 字數 2925 閱讀 6318

棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端

稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo(last in first out)的原則。

壓棧:棧的插入操作叫做進棧/壓棧/入棧,入資料在棧頂。

出棧:棧的刪除操作叫做出棧。出資料也在棧頂。

棧的實現一般可以使用陣列或者鍊錶實現,相對而言陣列的結構實現更優一些。因為陣列在尾上插入資料的代價比較小,本篇部落格採用的就是陣列

typedef

int stdatatype;

typedef

struct stack

stack;

void

stackinit

(stack* ps)

void

stackpush

(stack* ps, stdatatype data)

else

} ps->_a[ps->_top]

= data;

//棧頂位置賦值為data

ps->_top++

;//棧頂後移一位

}

void

stackpop

(stack* ps)

ps->_top--

;//棧不為空,棧頂前移一位

}

stdatatype stacktop

(stack* ps)

return ps->_a[ps->_top -1]

;//棧不為空,返回棧頂元素

stack.**件

#pragma once

#include

#include

#include

// 支援動態增長的棧

typedef

char stdatatype;

typedef

struct stack

stack;

// 初始化棧

void

stackinit

(stack* ps)

;// 入棧

void

stackpush

(stack* ps, stdatatype data)

;// 出棧

void

stackpop

(stack* ps)

;// 獲取棧頂元素

stdatatype stacktop

(stack* ps)

;// 獲取棧中有效元素個數

intstacksize

(stack* ps)

;// 檢測棧是否為空,如果為空返回非零結果,如果不為空返回0

intstackempty

(stack* ps)

;// 銷毀棧

void

stackdestroy

(stack* ps)

;

stack.c檔案

#include

"stack.h"

// 初始化棧

void

stackinit

(stack* ps)

// 入棧

void

stackpush

(stack* ps, stdatatype data)

else

} ps->_a[ps->_top]

= data;

//棧頂位置賦值為data

ps->_top++

;//棧頂後移一位

}// 出棧

void

stackpop

(stack* ps)

ps->_top--

;//棧不為空,棧頂前移一位

}// 獲取棧頂元素

stdatatype stacktop

(stack* ps)

return ps->_a[ps->_top -1]

;//棧不為空,返回棧頂元素

}// 獲取棧中有效元素個數

intstacksize

(stack* ps)

// 檢測棧是否為空,如果為空返回非零結果,如果不為空返回0

intstackempty

(stack* ps)

else

}// 銷毀棧

void

stackdestroy

(stack* ps)

test.c

#include

"stack.h"

void

test()

printf

("\n");

stackdestroy

(&s);}

intmain()

資料結構 棧的簡單理解以及對棧的基本操作

先來簡單的了解一下棧 1.棧 一種特殊的線性表,其實只允許在固定的一端進行插入或刪除操作。進行資料插入和刪除的一端稱為棧頂,另一端稱為棧底。不含任何元素的棧稱為空棧,棧又稱為 後進先出的線性表。2.順序棧和順序表資料成員相同,不同之處 順序棧的入棧和出棧操作只允許對當前棧頂進行操作!棧的初始化 vo...

資料結構之棧的基本操作

棧的結構型別,和基本操作如下 typedef struct stack,st void initstack stack s 初始化棧 void destroystack stack s 銷毀棧 void push stack st,type e 插入元素 type pop stack st 彈出棧頂...

資料結構的鏈棧基本操作

本程式主要是實現 建立空棧 進棧 出棧 清空棧 判空 取棧頂元素 取棧底元素 獲取棧元素長度 銷毀 include include include linkstack.h int main void pushstack mystack,100 pushstack mystack,200 pushst...