#ifndef LINKSTACK_H_INCLUDED
#define LINKSTACK_H_INCLUDED
#include <stdlib.h>
#include <stdio.h>
typedef struct LINKNODE {
struct LINKNODE *next;
}LinkNode;
typedef struct LINKSTACK {
LinkNode head;
int size;
}LinkStack;
LinkStack *Init_LinkStack();
void Push_LinkStack(LinkStack *stack, LinkNode *data);
void Pop_LinkStack(LinkStack *stack);
LinkNode* Top_LinkStack(LinkStack *stack);
int Size_LinkStack(LinkStack *stack);
void Clear_LinkStack(LinkStack *stack);
void FreeSpace_LinkStack(LinkStack *stack);
#endif
#include "LinkStack.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
LinkStack *Init_LinkStack() {
LinkStack *stack = (LinkStack *)malloc(sizeof(LinkStack));
stack->head.next = NULL;
stack->size = 0;
return stack;
}
void Push_LinkStack(LinkStack *stack, LinkNode *data) {
if(stack == NULL){
return;
}
if(data == NULL){
return;
}
data->next = stack->head.next;
stack->head.next = data;
stack->size++;
}
void Pop_LinkStack(LinkStack *stack) {
if(stack == NULL){
return;
}
if(stack->size == 0){
return;
}
LinkNode *pNext = stack->head.next;
stack->head.next = pNext->next;
stack->size--;
}
LinkNode* Top_LinkStack(LinkStack *stack) {
if(stack == NULL){
return NULL;
}
if(stack->size == 0){
return NULL;
}
return stack->head.next;
}
int Size_LinkStack(LinkStack *stack) {
if(stack == NULL){
return 0;
}
return stack->size;
}
void Clear_LinkStack(LinkStack *stack) {
if(stack == NULL){
return;
}
stack->head.next = NULL;
stack->size = 0;
}
void FreeSpace_LinkStack(LinkStack *stack) {
if(stack == NULL) {
return;
}
free(stack);
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "LinkStack.h"
typedef struct PERSON {
LinkNode node;
char name[64];
int age;
}Person;
int main()
{
printf("链式栈!\n");
LinkStack *stack = Init_LinkStack();
Person p1, p2, p3, p4, p5;
strcpy(p1.name, "Jarvis1");
strcpy(p2.name, "Jarvis2");
strcpy(p3.name, "Jarvis3");
strcpy(p4.name, "Jarvis4");
strcpy(p5.name, "Jarvis5");
p1.age = 10;
p2.age = 20;
p3.age = 30;
p4.age = 40;
p5.age = 50;
Push_LinkStack(stack, (LinkNode*)&p1);
Push_LinkStack(stack, (LinkNode*)&p2);
Push_LinkStack(stack, (LinkNode*)&p3);
Push_LinkStack(stack, (LinkNode*)&p4);
Push_LinkStack(stack, (LinkNode*)&p5);
while(Size_LinkStack(stack) > 0) {
Person *p = (Person *)Top_LinkStack(stack);
printf("Name : %s, Age : %d \n", p->name, p->age);
Pop_LinkStack(stack);
}
FreeSpace_LinkStack(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的一些问题思考