c语言链式栈基本操作
时间: 2023-12-02 12:39:55 浏览: 102
链式栈是一种基于链表实现的栈结构,它的基本操作包括入栈、出栈、获取栈顶元素和判断栈是否为空。下面是C语言链式栈的基本操作:
1. 定义链式栈的结构体
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct Stack {
Node* top;
} Stack;
```
2. 初始化链式栈
```c
void initStack(Stack* stack) {
stack->top = NULL;
}
```
3. 判断链式栈是否为空
```c
int isEmpty(Stack* stack) {
return stack->top == NULL;
}
```
4. 入栈操作
```c
void push(Stack* stack, int data) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = stack->top;
stack->top = node;
}
```
5. 出栈操作
```c
int pop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
int data = stack->top->data;
Node* temp = stack->top;
stack->top = stack->top->next;
free(temp);
return data;
}
```
6. 获取栈顶元素
```c
int getTop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
return stack->top->data;
}
```
以上就是C语言链式栈的基本操作。需要注意的是,链式栈的入栈和出栈操作都是在链表的头部进行的,因此时间复杂度为O(1)。如果需要遍历整个链表,时间复杂度为O(n)。
阅读全文