#ifndef SEQSTACK_H_
#define SEQSTACK_H_
#define MAX_SIZE 1024
#define SEQ_STACK_TRUE 1
#define SEQ_STACK_FALSE 0
typedef struct SEQSTACK {
void *data[MAX_SIZE];
int size;
} SeqStack;
SeqStack *Init_SeqStack();
void Push_SeqStack(SeqStack *stack, void *data);
void *Top_SeqStack(SeqStack *stack);
void Pop_SeqStack(SeqStack *stack);
int IsEmpty(SeqStack *stack);
int Size_SeqStack(SeqStack *stack);
void Clear_SeqStack(SeqStack *stack);
void FreeSpace_SeqStack(SeqStack *stack);
#endif
#include "SeqStack.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
SeqStack *Init_SeqStack() {
SeqStack *stack = (SeqStack *)malloc(sizeof(SeqStack));
for(int i = 0; i < MAX_SIZE; i++){
stack->data[i] = NULL;
}
stack->size = 0;
return stack;
}
void Push_SeqStack(SeqStack *stack, void *data) {
if(stack == NULL){
return;
}
if(stack->size == MAX_SIZE) {
return;
}
if(data == NULL){
return;
}
stack->data[stack->size] = data;
stack->size++;
}
void *Top_SeqStack(SeqStack *stack) {
if(stack == NULL){
return NULL;
}
if(stack->size == 0){
return NULL;
}
return stack->data[stack->size-1];
}
void Pop_SeqStack(SeqStack *stack) {
if(stack == NULL){
return;
}
if(stack->size == 0){
return;
}
stack->data[stack->size-1] = NULL;
stack->size--;
}
int IsEmpty(SeqStack *stack) {
if(stack == NULL){
return -1;
}
if(stack->size == 0){
return SEQ_STACK_TRUE;
}
return SEQ_STACK_FALSE;
}
int Size_SeqStack(SeqStack *stack) {
return stack->size;
}
void Clear_SeqStack(SeqStack *stack) {
if(stack == NULL){
return;
}
for(int i = 0;i < stack->size; i++){
stack->data[i] = NULL;
}
stack->size = 0;
}
void FreeSpace_SeqStack(SeqStack *stack){
if(stack == NULL){
return;
}
free(stack);
}
#include "SeqStack.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct PERSON {
char name[64];
int age;
} Person;
int main(){
printf("栈 \n");
SeqStack *stack = Init_SeqStack();
Person p1 = {"Jarvis1", 11};
Person p2 = {"Jarvis2", 12};
Person p3 = {"Jarvis3", 13};
Person p4 = {"Jarvis4", 14};
Person p5 = {"Jarvis5", 15};
Push_SeqStack(stack, &p1);
Push_SeqStack(stack, &p2);
Push_SeqStack(stack, &p3);
Push_SeqStack(stack, &p4);
Push_SeqStack(stack, &p5);
while(Size_SeqStack(stack) > 0) {
Person *person = (Person *)Top_SeqStack(stack);
printf("Name: %s, Age: %d \n", person->name, person->age);
Pop_SeqStack(stack);
}
FreeSpace_SeqStack(stack);
system("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2018-08-09 iOS中UITableView的一些问题思考