使用SLL堆栈为初学者
#初学者 #c #堆栈 #dsa

让我们编写使用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;
}

现在,在编辑器中运行程序,并确保尝试不同的插入和删除值,以确保遵循边缘案例。如果您找到任何错误,请在下面注释!
谢谢你ð