实现 step2/LnkStack.cpp 中的LS_IsEmpty、LS_Length、LS_Push、LS_Pop和LS_Top五个操作函数,以实现判断栈是否为空、求栈的长度、进栈、出栈以及获取栈顶元素等功能。
时间: 2023-07-10 15:12:03 浏览: 142
好的,我会根据你的要求进行回答。下面是对于这五个操作函数的实现,具体代码如下:
```cpp
#include "LnkStack.h"
// 判断栈是否为空
bool LS_IsEmpty(LinkStack* s) {
return s->top == NULL;
}
// 求栈的长度
int LS_Length(LinkStack* s) {
int length = 0;
LinkStackNode* p = s->top;
while (p != NULL) {
length++;
p = p->next;
}
return length;
}
// 进栈
void LS_Push(LinkStack* s, LinkStackElementType data) {
LinkStackNode* new_node = (LinkStackNode*)malloc(sizeof(LinkStackNode));
new_node->data = data;
new_node->next = s->top;
s->top = new_node;
}
// 出栈
bool LS_Pop(LinkStack* s, LinkStackElementType* data) {
if (LS_IsEmpty(s)) {
return false;
}
LinkStackNode* del_node = s->top;
s->top = del_node->next;
*data = del_node->data;
free(del_node);
return true;
}
// 获取栈顶元素
bool LS_Top(LinkStack* s, LinkStackElementType* data) {
if (LS_IsEmpty(s)) {
return false;
}
*data = s->top->data;
return true;
}
```
以上就是实现了这五个操作函数的代码。需要注意的是,这里的 `LinkStack` 结构体定义在头文件 `LnkStack.h` 中,具体定义如下:
```cpp
typedef int LinkStackElementType;
typedef struct LinkStackNode {
LinkStackElementType data;
struct LinkStackNode* next;
} LinkStackNode;
typedef struct {
LinkStackNode* top;
} LinkStack;
```
同时,需要在头文件中声明这五个操作函数的原型,如下所示:
```cpp
bool LS_IsEmpty(LinkStack* s);
int LS_Length(LinkStack* s);
void LS_Push(LinkStack* s, LinkStackElementType data);
bool LS_Pop(LinkStack* s, LinkStackElementType* data);
bool LS_Top(LinkStack* s, LinkStackElementType* data);
```
希望这些代码能够帮助到你!如果你还有其他的问题,可以随时问我哦!
阅读全文