棧的基本操作及粗淺應用

2021-08-19 16:22:23 字數 1949 閱讀 7185

#pragma once

#include

#include

#include

#include

#define stack_init_deep 100

typedef int datatype;

typedef struct stackstack,*pstack;

//初始化棧

void stackinit(pstack s);

//壓棧

void stackpush(pstack s, datatype data);

//彈棧

void stackpop(pstack s);

//動態增容

void stackaddcapacity(pstack s);

//獲取棧中元素個數

int stacksize(pstack s);

//返回棧頂元素

datatype stackdata(pstack s);

// 檢測棧是否為空

int stackempty(pstack s);

//清空棧內元素

void stackclear(pstack s);

//銷毀棧

void stackdestroy(pstack s);

//判斷括號是否匹配

int judgebracket(pstack s, char str);

功能部分:

#include"apr_24.h"

//初始化棧

void stackinit(pstack s)

s->_top = 0;

s->_capacity = stack_init_deep;

}//壓棧

void stackpush(pstack s, datatype data)

*(s->_elem + s->_top) = data;

++s->_top;

}//彈棧

void stackpop(pstack s)

--s->_top;

}//返回棧頂元素

datatype stackdata(pstack s)

//獲取棧中元素個數

int stacksize(pstack s)

// 檢測棧是否為空

int stackempty(pstack s)

//動態增容

void stackaddcapacity(pstack s)

s->_capacity = s->_capacity * 2;

s->_elem = newbase;

}//清空棧內元素

void stackclear(pstack s)

//銷毀棧

void stackdestroy(pstack s)

//判斷括號是否匹配

int judgebracket(pstack s,char

str)

') '&& stackdata(s) == '

else

}if (stackempty(s) == 0 && i == len - 1)}}

return

0;}

測試部分

#define _crt_secure_no_warnings 1

#include"apr_24.h"

void test()

"; stackinit(&s);

printf("%d\n", s._capacity);

printf("%d\n", stacksize(&s));

printf("%d\n", judgebracket(&s, str));

stackdestroy(&s);

}int main()

封裝棧的基本操作及棧的應用

程式 如下 stack.h typedef int sdatatype typedef char sdatatype define maxsize 10 typedef struct stack stack void stackinit stack ps void stackpush stack p...

棧的基本操作及其應用

這裡順序棧和鏈棧的基本操作和差別在之前的線性表操作中是一樣的,目前棧對我而言在實際使用中使用哪一種差別並沒有很大,順序棧用起來會方便一點 順序棧 adt typedef struct seqstack 入棧 int push seqstack s,datatype x 出棧 int pop seqs...

棧的定義及基本操作

1 定義 棧是僅限定在表的一端操作的線性表 2 性質 先進後出 後進先出 3 棧的儲存方式 順序儲存和鏈式儲存 順序棧的型別定義 typedef struct stack 棧的壓入操作 1 首先判斷是否棧滿,若棧滿,則輸出 棧滿溢位 2 先指標top 棧元素值 push s,e return s 棧...