用c语言建立链栈,并在链栈上实现入栈和出栈操作,入栈与出栈元素皆用键盘输入
时间: 2024-02-01 10:16:48 浏览: 83
以下是用C语言实现链栈的代码,包含了入栈和出栈操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈结构体
typedef struct node {
int data;
struct node *next;
} Node;
// 初始化栈
void initStack(Node **top) {
*top = NULL;
}
// 判断栈是否为空
int isEmpty(Node *top) {
return top == NULL;
}
// 入栈
void push(Node **top, int value) {
Node *newNode = (Node *) malloc(sizeof(Node));
newNode->data = value;
newNode->next = *top;
*top = newNode;
}
// 出栈
int pop(Node **top) {
if (isEmpty(*top)) {
printf("Stack is empty.\n");
return -1;
}
int value = (*top)->data;
Node *temp = *top;
*top = (*top)->next;
free(temp);
return value;
}
int main() {
Node *top;
initStack(&top);
int option, value;
do {
printf("1. Push\n");
printf("2. Pop\n");
printf("3. Quit\n");
printf("Enter your option: ");
scanf("%d", &option);
switch (option) {
case 1:
printf("Enter value to push: ");
scanf("%d", &value);
push(&top, value);
break;
case 2:
value = pop(&top);
if (value != -1) {
printf("Popped value: %d\n", value);
}
break;
case 3:
printf("Quitting program.\n");
break;
default:
printf("Invalid option, please try again.\n");
}
} while (option != 3);
return 0;
}
```
这个代码中,我们首先定义了一个链栈结构体 `Node` ,包含了一个整数 `data` 和一个指向下一个节点的指针 `next` 。
接着,我们实现了 `initStack()` 函数来初始化一个空栈,以及 `isEmpty()` 函数来判断栈是否为空。
`push()` 函数用于将一个元素入栈,它会创建一个新的节点并将其添加到栈顶。
`pop()` 函数用于将一个元素出栈,它会返回栈顶元素的值,并将其从链栈中删除。
最后,在 `main()` 函数中,我们使用一个循环来接受用户的输入,并根据用户的选择执行相应的操作。当用户选择退出时,程序结束。
阅读全文