22 順序棧的基本運算

2021-08-20 16:43:34 字數 2495 閱讀 5330

sqstack.h檔案

#ifndef sqstack_h

#define sqstack_h

#include

#include

#define maxsize 100

//定義棧的順序儲存結構

typedef

struct sqstack

sqstack;

//初始化棧

sqstack* init_sqstack();

//銷毀棧

void free_sqstack(sqstack* stack);

//判斷棧是否為空,為空返回0,不為空返回-1

int sqstack_isempty(sqstack* stack);

//進棧

void push_sqstack(sqstack* stack,void* data);

//出棧

void pop_sqstack(sqstack* stack);

//取棧頂元素

void* gettop_sqstack(sqstack* stack);

#endif

sqstack.c檔案

#include "sqstack.h"

//初始化棧

sqstack* init_sqstack()

//標記為棧空

stack->top = -1;

return

stack;

}//銷毀棧

void free_sqstack(sqstack* stack)

free(stack);

stack = null;

}//判斷棧是否為空,為空返回0,不為空返回-1

int sqstack_isempty(sqstack* stack)

//當top下標 = -1則說明棧為空

if(stack->top == -1)

return -1;

}//進棧

void push_sqstack(sqstack* stack,void* data)

//說明棧滿了

if(stack->top == maxsize -1)

//top下標+1

stack->top++;

//在棧頂插入元素

stack->data[stack->top] = data;

}//出棧

void pop_sqstack(sqstack* stack)

//判斷棧是否為空

if(stack->top == -1)

//元素出棧

stack->data[stack->top] = null;

//top下標-1

stack->top--;

}//取棧頂元素

void* gettop_sqstack(sqstack* stack)

if(stack->top == -1)

//返回棧頂元素

return

stack->data[stack->top];

}

main.c測試檔案

#define _crt_secure_no_warnings

#include "sqstack.h"

#include

typedef

struct student

student;

int main(void)

; student s2 = ;

student s3 = ;

student s4 = ;

student s5 = ;

//將元素入棧

printf("-----------元素入棧--------------\n\n");

push_sqstack(stack, (void *)&s1);

push_sqstack(stack, (void *)&s2);

push_sqstack(stack, (void *)&s3);

push_sqstack(stack , (void *)&s4);

push_sqstack(stack ,(void *)&s5);

printf("-----------訪問棧頂元素--------------\n");

//訪問棧中的元素

while(stack->top > -1)

printf("--------------釋放棧----------------\n");

//釋放棧

free_sqstack(stack);

return

0;}

測試結果:

2 2 順序棧 鏈棧 基本操作

目錄 1.順序棧操作 2.共享棧 3.鏈棧操作 上面的操作都是基於 初始化棧的時候將 top 指標指向了 1,有資料時指向棧頂元素。如果初始化的時候將 top 指標指向 0 位置,這種方式是將 top 指標指向下乙個我們可以插入元素的位置。在這種情況下,進行進棧操作的時候,應該為 s.data s....

實現順序棧基本運算 棧

c語言實現順序棧的入棧 出棧 棧元素讀取操作 1 include 2 include 3 define maxsize 20 4 define maxnum 10 5 define elemtype int 6 typedef struct sqstack 7 sqstack 儲存結構型別名 111...

實現順序棧的各種基本運算

struct sqstack 棧的結構 bool init sqstack s 初始化函式 bool isempty sqstack s bool push sqstack s,int e 第二個元素是要進棧的元素 bool pop sqstack s,int e 第二個引數是要出棧的元素 bool...