出栈和取栈顶元素有什么区别?

在学习栈的时候,遇到了一个题,需要出栈操作和取栈顶元素操作,一时半会没反应过来着两者有什么区别。仔细想想,如果进行出栈操作,其实就是把栈顶元素从栈中直接删除,而取栈顶元素只是返回栈顶元素,并没有删除栈顶元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以帮您实现这个功能。以下是C语言实现栈的代码: ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 // 栈的最大容量 struct Stack { int data[MAXSIZE]; // 存储栈中元素的数组 int top; // 栈顶指针 }; void initStack(struct Stack *s) { s->top = -1; } int isEmpty(struct Stack *s) { return s->top == -1; } int isFull(struct Stack *s) { return s->top == MAXSIZE - 1; } void push(struct Stack *s, int x) { if (isFull(s)) { printf("栈已满,无法插入元素!\n"); return; } s->data[++s->top] = x; } int pop(struct Stack *s) { if (isEmpty(s)) { printf("栈已空,无法弹出元素!\n"); return -1; } return s->data[s->top--]; } int peek(struct Stack *s) { if (isEmpty(s)) { printf("栈已空,无法出栈元素!\n"); return -1; } return s->data[s->top]; } void menu() { printf("********** 栈的基本操作 **********\n"); printf("1. 进栈\n"); printf("2. 出栈\n"); printf("3. 栈顶元素\n"); printf("4. 退出\n"); printf("**********************************\n"); } int main() { struct Stack s; initStack(&s); int choice, x; while (1) { menu(); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入要插入的元素:"); scanf("%d", &x); push(&s, x); break; case 2: x = pop(&s); if (x != -1) { printf("弹出的元素为:%d\n", x); } break; case 3: x = peek(&s); if (x != -1) { printf("栈顶元素为:%d\n", x); } break; case 4: printf("程序已退出!\n"); exit(0); default: printf("输入有误,请重新选择!\n"); break; } } return 0; } ``` 在这段代码中,我们定义了一个 `Stack` 结构体,包含一个存储元素的数组 `data` 和一个栈顶指针 `top`。然后,我们实现了栈的基本操作函数,包括初始化栈、判断栈空和栈满、进栈、出栈栈顶元素。最后,我们编写了一个菜单函数 `menu` 和一个主函数 `main`,通过菜单选择不同的操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值