让我们编写使用linkedlist实现堆栈的代码
先决条件:LinkedList操作的简要了解。
在开始之前,让我们知道什么是堆栈?
堆栈是遵循LIFO原理的数据结构。这是最先进的缩写。从技术上讲,插入数据结构的最后一项可以首先取出。
可以在现实生活中看到堆栈的应用程序,例如一堆书籍,文件,用于乒乓球的圆柱形容器,饼干包装器等。
可以在堆栈数据结构上执行的操作是推动(插入),pop(删除)和peek(顶部元素)。
代码:
1. 定义我们的节点的结构
#include <stdio.h>
#include <stdlib.h>
struct Node{
int data;
struct Node* next;
};
// global top pointer
struct Node* top=NULL;
2. 写入打印元素的打印功能
我们从顶部穿过列表,直到到达null并打印节点的所有数据。
void print(){
struct Node *traverse = top;
while(traverse!=NULL){
printf("%d ",traverse->data);
traverse = traverse->next; // iterate
}
printf("\n");
}
3. 添加(push)在我们的堆栈(列表)
将新元素推向堆栈与列表开头的节点的插入相同。
void Push(int x){
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = x;
newNode->next = NULL;
if(top==NULL){
top = newNode;
print();
return;
}
// link fix with first node
newNode->next = top;
top = newNode;
printf("Stack after insertion : \n");
print();
}
4. 删除(popping)元素(node)从堆栈(列表)
从堆栈中弹出与列表开头删除节点相同。
void Pop(){
if(top == NULL){
printf("Stack is empty!!\n");
return ;
}
struct Node *temp = top->next; // one node skipped i.e., deleted
top->next = NULL;
top = temp;
printf("Stack after deletion: \n");
print();
}
5. peek(显示顶部)元素(节点)
窥视显示数组的顶部元素,如果存在否则堆栈为空
void peek(){
if(top == NULL) printf("Stack empty!\n");
else printf("Top element is: ",top->data);
}
6. 现在,我们使用开关情况
编写用户交互的主要功能和接口
int main(){
top = NULL;
int choice;
printf("Enter 1 for push, 2 for pop, 3 for peek: ");
scanf("%d",&choice);
// switch statement
switch(choice){
case 1:
int value;
printf("Enter the value for insertion : ");
scanf("%d",&value);
Push(value);
break;
case 2:
Pop();
break;
case 3:
peek();
break;
default:
printf("Wrong choice!");
break;
}
return 1;
}
现在,在编辑器中运行程序,并确保尝试不同的插入和删除值,以确保遵循边缘案例。如果您找到任何错误,请在下面注释!
谢谢你ð