초보자를 위한 SLL을 사용한 스택
전제 조건: 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;
}
이제 편집기에서 프로그램을 실행하고 다른 값의 삽입 및 삭제를 시도하여 엣지 케이스를 따르고 있는지 확인하십시오. 버그를 발견하면 아래에 댓글을 달아주세요!
감사합니다 👋
Reference
이 문제에 관하여(초보자를 위한 SLL을 사용한 스택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suman373_30/stack-using-sll-for-beginners-400g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)