欢迎光临散文网 会员登陆 & 注册

顺序栈

2023-06-09 11:07 作者:大天篷  | 我要投稿

#include #include // 定义栈结构体 typedef struct {   int *data; // 栈中数据的指针   int top; // 栈顶指针   int size; // 栈的大小 } SeqStack; // a. 对栈动态分配内存 void initStack(SeqStack *S, int size) {   S->data = (int *)malloc(sizeof(int) * size);   S->top = -1;   S->size = size; } // b. 初始化栈 void createStack(SeqStack *S) {   int data;   printf("请输入栈的元素数量:");   int n;   scanf("%d", &n);   printf("请依次输入栈的元素:\n");   for (int i = 0; i < n; i++) {     scanf("%d", &data);     S->data[++S->top] = data;   } } // c. 取栈顶元素的值 int top(SeqStack *S) {   if (S->top == -1) {     printf("栈为空,无法取栈顶元素。\n");     return -1;   }   return S->data[S->top]; } // d. 在栈顶插入元素 void push(SeqStack *S, int data) {   if (S->top == S->size - 1) {     printf("栈已满,无法插入元素。\n");     return;   }   S->data[++S->top] = data; } // e. 出栈操作 int pop(SeqStack *S) {   if (S->top == -1) {     printf("栈为空,无法出栈。\n");     return -1;   }   int data = S->data[S->top--];   return data; } // f. 遍历栈中元素 void traverse(SeqStack *S) {   if (S->top == -1) {     printf("栈为空。\n");     return;   }   printf("栈中元素为:\n");   for (int i = S->top; i >= 0; i--) {     printf("%d ", S->data[i]);   }   printf("\n"); } int main() {   SeqStack S;   initStack(&S, 10);   createStack(&S);   printf("栈顶元素为:%d\n", top(&S));   push(&S, 10);   printf("插入后栈顶元素为:%d\n", top(&S));   printf("出栈的元素为:%d\n", pop(&S));   traverse(&S);   return 0; }

顺序栈的评论 (共 条)

分享到微博请遵守国家法律