用c语言写一个关于链栈的创建
时间: 2023-11-24 08:05:37 浏览: 40
#include <stdio.h>
#include <stdlib.h>
// 定义链栈的结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个结点的指针
} Node;
// 初始化链栈
Node* initStack() {
Node* top = (Node*)malloc(sizeof(Node)); // 申请头结点空间
top->next = NULL; // 头结点的指针域为空
return top;
}
// 判断链栈是否为空
int isEmpty(Node* top) {
return top->next == NULL;
}
// 入栈
void push(Node* top, int x) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 申请新结点空间
newNode->data = x; // 将新结点的数据域赋值为x
newNode->next = top->next; // 将新结点的指针域指向原来的栈顶结点
top->next = newNode; // 将头结点的指针域指向新结点
}
// 出栈
int pop(Node* top) {
if (isEmpty(top)) { // 如果链栈为空,则无法进行出栈操作
printf("Stack is empty!\n");
return -1;
}
Node* temp = top->next; // 定义一个临时结点,存储要出栈的结点
int data = temp->data; // 将要出栈结点的数据域赋值给data
top->next = temp->next; // 将头结点的指针域指向要出栈结点的下一个结点
free(temp); // 释放要出栈结点的空间
return data; // 返回要出栈结点的数据域
}
// 获取栈顶元素
int getTop(Node* top) {
if (isEmpty(top)) { // 如果链栈为空,则无法获取栈顶元素
printf("Stack is empty!\n");
return -1;
}
return top->next->data; // 返回栈顶元素的数据域
}
// 输出链栈中的元素
void printStack(Node* top) {
if (isEmpty(top)) { // 如果链栈为空,则无法输出元素
printf("Stack is empty!\n");
return;
}
Node* p = top->next; // 从栈顶结点开始遍历
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node* top = initStack(); // 初始化链栈
push(top, 1); // 入栈1
push(top, 2); // 入栈2
push(top, 3); // 入栈3
printf("栈中的元素为:");
printStack(top); // 输出栈中的元素
printf("栈顶元素为:%d\n", getTop(top)); // 获取栈顶元素
printf("出栈元素为:%d\n", pop(top)); // 出栈
printf("栈中的元素为:");
printStack(top); // 输出栈中的元素
printf("栈顶元素为:%d\n", getTop(top)); // 获取栈顶元素
return 0;
}
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)