1、頭文件sqstack.h
#include <stdio.h>
#define MAXSIZE 100
typedef struct SqStack
{
void* data[MAXSIZE];
int top; //指向棧頂下標(biāo)
}SqStack;
void InitStack(SqStack*);
int StackEmpty(SqStack*);
int StackLength(SqStack*);
void ClearStack(SqStack*);
void GetTop(SqStack*, void**);
void PushStack(SqStack*, void*);
void PopStach(SqStack*, void**);
2、相關(guān)函數(shù)操作文件sqstack.c
#include <stdio.h>
#include <string.h>
#include "SqStack.h"
//棧的初始化
void InitStack(SqStack* S)
{
//空棧
S->top = -1;
memset(S->data, 0, sizeof(S->data));
}
int StackEmpty(SqStack* S)
{
if(S->top == -1)
{
return 1;
}
return 0;
}
void ClearStack(SqStack* S)
{
S->top = -1;
}
void GetTop(SqStack* S, void** e)
{
if(S->top == -1)
{
printf("當(dāng)前棧為空棧!");
return;
}
*e = S->data[S->top];
}
void PushStack(SqStack* S, void* e)
{
if(S->top == MAXSIZE - 1)
{
printf("棧滿,無法壓棧!");
return;
}
S->top++;
S->data[S->top] = e;
}
void PopStach(SqStack* S, void** e)
{
if(S->top == -1)
{
printf("空棧,無法出棧!");
return;
}
*e = S->data[S->top];
S->top--;
}
int StackLength(SqStack* S)
{
return S->top+1;
}
3、主函數(shù)測試文件main.c
#include <stdio.h>
#include <stdlib.h>
#include "SqStack.h"
typedef struct student
{
int age;
int id;
}stu;
int main()
{
SqStack st;
stu s[10];
InitStack(&st);
int i = 0;
for(i = 0; i < 10; i++)
{
s[i].age = i + 20;
s[i].id = i;
PushStack(&st, &s[i]);
}
printf("當(dāng)前棧的大小為:%d\n", StackLength(&st));
stu* sp;
for(i = 0; i < 5; i++)
{
GetTop(&st, (void**)&sp);
printf("當(dāng)前棧頂元素值為:%d, %d\n", sp->age, sp->id);
PopStach(&st, (void**)&sp);
printf("出棧元素值為:%d, %d\n", sp->age, sp->id);
printf("\n");
}
printf("當(dāng)前棧的大小為:%d\n", StackLength(&st));
ClearStack(&st);
printf("當(dāng)前棧的大小為:%d\n", StackLength(&st));
//printf("Hello world!\n");
return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。