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...