数据结构栈的基本操作
栈是一种数据结构,它具有后进先出(LIFO)的特性。栈可以用数组或链表实现,其基本操作包括入栈、出栈、查看栈顶元素和判断栈是否为空。
1. 入栈操作
入栈操作是将元素添加到栈顶的过程。在数组实现中,我们需要维护一个指针top,指向当前的栈顶元素。当我们要入栈一个新元素时,我们将top加1,并将该元素放在新的top位置上。在链表实现中,我们只需要在链表头部插入新节点即可。
以下是使用数组实现入栈操作的示例代码:
```
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int x) {
if (top == MAX_SIZE - 1) {
printf("Stack overflow\n");
return;
}
top++;
stack[top] = x;
}
```
2. 出栈操作
出栈操作是将当前的栈顶元素删除并返回其值的过程。在数组实现中,我们只需要将top减1即可。在链表实现中,我们需要删除链表头部节点并返回其值。
以下是使用数组实现出栈操作的示例代码:
```
int pop() {
if (top == -1) {
printf("Stack underflow\n");
return -1;
}
int val = stack[top];
top--;
return val;
}
```
3. 查看栈顶元素
查看栈顶元素是获取当前的栈顶元素的值,而不删除它的过程。在数组实现中,我们只需要返回stack[top]即可。在链表实现中,我们需要返回链表头部节点的值。
以下是使用数组实现查看栈顶元素操作的示例代码:
```
int peek() {
if (top == -1) {
printf("Stack is empty\n");
return -1;
}
return stack[top];
}
```
数组和链表4. 判断栈是否为空
判断栈是否为空是检查当前栈是否包含任何元素的过程。在数组实现中,我们只需要检查top是否为-1即可。在链表实现中,我们只需要检查链表头部指针是否为NULL。
以下是使用数组实现判断栈是否为空操作的示例代码:
```
bool isEmpty() {
return top == -1;
}
```
综上所述,以上就是数据结构栈的基本操作:入栈、出栈、查看栈顶元素和判断栈是否为空。这些基本操作是使用堆栈时必不可少的,并且它们可以应用于多种算法和数据结构问题中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论