초보자를 위한 SLL을 사용한 스택

2966 단어 dsastackbeginnersc
linkedlist를 사용하여 스택을 구현하는 코드를 작성해 보겠습니다.
전제 조건: linkedlist 작업에 대한 간략한 지식.
시작하기 전에 Stack이 무엇인지 알려주세요.
스택은 LIFO 원칙을 따르는 데이터 구조입니다. 후입선출의 약자입니다. 기술적으로는 데이터 구조에 삽입된 마지막 항목을 먼저 꺼낼 수 있습니다.
스택에 대한 응용 프로그램은 책 더미, 파일, 탁구공용 원통형 컨테이너, 비스킷 포장지 등과 같은 실생활에서 볼 수 있습니다.

스택 데이터 구조에서 수행할 수 있는 작업은 푸시(삽입), 팝(삭제) 및 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. 스택(리스트)에 새로운 요소(노드) 추가(푸시)
새 요소를 스택에 푸시하는 것은 목록의 시작 부분에 노드를 삽입하는 것과 같습니다.

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. 스택(리스트)에서 요소(노드) 삭제(팝핑)
스택에서 팝하는 것은 목록의 시작 부분에서 노드를 삭제하는 것과 같습니다.

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(show top) 요소(노드)
엿보기는 배열이 존재하는 경우 배열의 맨 위 요소를 보여줍니다. 그렇지 않으면 스택이 비어 있습니다.

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;
}


이제 편집기에서 프로그램을 실행하고 다른 값의 삽입 및 삭제를 시도하여 엣지 케이스를 따르고 있는지 확인하십시오. 버그를 발견하면 아래에 댓글을 달아주세요!
감사합니다 👋

좋은 웹페이지 즐겨찾기