用链表实现链式栈LinkStack, 栈内数据域为char类型,实现栈的进栈、出栈、取栈顶元素
时间: 2024-11-15 16:26:27 浏览: 10
链表-使用Python基于链表实现栈数据结构.zip
链式栈LinkStack是一种利用链表结构存储数据的栈,其中每个节点包含一个字符(char类型)和指向下一个节点的指针。以下是基本的链式栈操作:
1. **入栈(push)**:
- 新建一个节点,将字符数据赋值给新节点。
- 将新节点的next指针指向当前栈顶节点(如果栈为空,则指向自身)。
- 更新栈顶指针,使其指向新节点。
```c++
void push(char item) {
Node* newNode = new Node();
newNode->data = item;
if (top == NULL) {
top = newNode;
} else {
newNode->next = top;
top = newNode;
}
}
```
2. **出栈(pop)**:
- 检查栈是否为空,若为空则抛出异常或返回特殊标志。
- 将栈顶节点的数据复制到临时变量中,并删除栈顶节点。
- 更新栈顶指针指向新的栈顶节点(即上一个节点)。
```c++
char pop() {
if (top == NULL) {
throw "Stack is empty!";
}
char item = top->data;
Node* temp = top;
top = top->next;
delete temp;
return item;
}
```
3. **取栈顶元素(peek/top)**:
- 检查栈是否为空,若为空则抛出异常或返回特殊标志。
- 直接返回栈顶节点的数据,不改变栈的状态。
```c++
char getTop() {
if (top == NULL) {
throw "Stack is empty!";
}
return top->data;
}
```
阅读全文