C语言顺序栈实现及常见错误分析
#include<stdio.h> #include<stdlib.h>
//栈的结构体定义 //顺序栈 #define stacksize 100 typedef struct { int data[stacksize]; int top; }seqstack;
//初始化 /* 1、开内存 2、sq->top=-1 / seqstack sq; void Intistack() { sq = (seqstack*)malloc(sizeof(seqstack)); sq->top = -1; }
//进栈 int push(int x) { if (sq->top == stacksize-1) return 0; sq->top++; sq->data[sq->top] = x; return 1; }
//出栈 int pop() { if (sq->top == -1) return 0; sq->top--; return 1; }
//展示 void show() { int temp = sq->top; while (temp != -1) { printf("%d\t", sq->data[temp]); temp--; } }
//主菜单 void menu() { int choose, x; Intistack(); while (1) { printf("\n请选择操作:\n\t1、入栈\n\t2、出栈\n\t3、展示栈中内容\n\t4、退出\n"); scanf("%d", &choose); switch (choose) { case 1: scanf("%d", &x); push(x); break; case 2: pop(); break; case 3: show(); break; case 4: free(sq); exit(0); break; default: printf("无效选项,请重新选择\n"); break; } } }
//主函数 int main() { menu(); return 0; }
原文地址: https://www.cveoy.top/t/topic/bgul 著作权归作者所有。请勿转载和采集!