链栈的基本操作c语言进制
时间: 2023-12-11 22:03:39 浏览: 25
链栈是一种基于链表实现的栈结构,其基本操作包括入栈、出栈、获取栈顶元素等。下面是链栈的基本操作示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈结构体
typedef struct Node {
int data;
struct Node *next;
} Node, *Stack;
// 初始化链栈
void initStack(Stack *s) {
*s = NULL;
}
// 判断链栈是否为空
int isEmpty(Stack s) {
return s == NULL;
}
// 入栈操作
void push(Stack *s, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = *s;
*s = newNode;
}
// 出栈操作
int pop(Stack *s) {
if (isEmpty(*s)) {
printf("Stack is empty!\n");
return -1;
}
int data = (*s)->data;
Node *temp = *s;
*s = (*s)->next;
free(temp);
return data;
}
// 获取栈顶元素
int getTop(Stack s) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return -1;
}
return s->data;
}
// 测试链栈基本操作
int main() {
Stack s;
initStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("Top element: %d\n", getTop(s));
printf("Pop element: %d\n", pop(&s));
printf("Top element: %d\n", getTop(s));
printf("Pop element: %d\n", pop(&s));
printf("Top element: %d\n", getTop(s));
printf("Pop element: %d\n", pop(&s));
printf("Top element: %d\n", getTop(s));
printf("Pop element: %d\n", pop(&s));
return 0;
}
```