栈
线性表:
顺序表:数组
链表:链表
栈:也是线性表。特点是先进后出,只能从栈顶入栈和出栈。
链式栈:
链式栈就是链表的头插法,由于是从头部插入,所以先进的后出
顺序栈:
//sqstack.h #ifndef _SQ_STACK_H_ #define _SQ_STACK_H_ typedef int data_t; typedef struct{ data_t *data; int len; int top; }sqstack; sqstack *sqstack_create(int length); int sqstack_destroy(sqstack *s); int sqstack_push(sqstack *s, int value); data_t sqstack_pop(sqstack *s); int sqstack_clear(sqstack *s); int sqstack_empty(sqstack *s); int sqstack_full(sqstack *s); void sqstack_show(sqstack *s); #endif
//sqstack.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqstack.h" sqstack *sqstack_create(int length) { sqstack *s = (sqstack *)malloc(sizeof(sqstack)); if(s == NULL){ printf("malloc s failed!!\n"); return NULL; } s->data = (data_t *)malloc(length * sizeof(data_t)); if(s->data == NULL){ printf("malloc s->data failed!!\n"); free(s); return NULL; } s->len = length; s->top = -1;// -1表示一个空链表 return s; } int sqstack_destroy(sqstack *s) { if(s == NULL){ printf("stack is NULL\n"); return -1; } free(s->data); free(s); } /* *ret @1-empty */ int sqstack_empty(sqstack *s) { if(s == NULL){ printf("stack is NULL\n"); return -1; } if(s->top == -1) return 1; else return 0; } /* *ret @1-full */ int sqstack_full(sqstack *s) { if(s == NULL){ printf("stack is NULL\n"); return -1; } if(s->top > s->len-1) return 1; else return 0; } int sqstack_push(sqstack *s, int value) { if(sqstack_full(s)){ printf("stack is full\n"); return -1; } s->data[++s->top] = value; } data_t sqstack_pop(sqstack *s) { if(sqstack_empty(s)){ printf("stack is empty\n"); return -1; } s->top--; return s->data[s->top+1]; } int sqstack_clear(sqstack *s) { if(s == NULL){ printf("stack is NULL"); return -1; } s->top = -1; return 0; } void sqstack_show(sqstack *s) { while(!sqstack_empty(s)){ printf("%d\t",sqstack_pop(s)); } printf("\n"); }
//sqstack_test.c #include "sqstack.h" #include <stdio.h> int main() { int i = 0; sqstack *s = sqstack_create(20); for(i = 0; i < 20; i++){ sqstack_push(s, i); printf("%d\t",i); } printf("\n"); sqstack_show(s); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具