본문 바로가기

기타 코드 낙서장/알고리즘

연결리스트 구현

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedef struct Node{

   int data;

   struct Node * next;

}Node;

 

Node * head=NULL;

Node * current=NULL;

Node * before=NULL;

 

//해당 데이터를 갖는 노드를 1개 생 성  

void newNode(int data){

   Node * nNode = (Node*)malloc(sizeof(Node));

   nNode->data = data;

   nNode->next = NULL;

   if(head == NULL){

      head=nNode;

      current=nNode;

   }

   else{

      current->next = nNode;

      current = current->next;

   }

}

 

//해당 데이터를 갖는 노드 1개를 삭 제  

void removeNode(int data){

   if(head->data==data){

      before=head;

      head=head->next;

      free(before);

      before=NULL;

      return;

   }

   current=head;

   while(current!=NULL){

         if(current->next!=NULL&&current->next->data==data){

            before=current->next;

            current->next=before->next;

            free(before);

            before=NULL;

            while(current->next!=NULL){

            current=current->next;

}

return;

         }else{

            current=current->next;

         }

   }

   

}

 

//모든 노드를 출력  

void display(){

   current=head;

   while(current->next!=NULL){

      printf("%d\n",current->data);

      current=current->next;

   }

   printf("%d\n",current->data);

}

 

 

void main(){

   int a,b;

   while(1){

      printf("1.입력/ 2.제거/ 3.출력");

      scanf("%d",&a);

      if(a==1){

         printf("입력 값 : ");

         scanf("%d",&b);

         newNode(b);

      }else if(a==2){

         printf("제거 값 : ");

         scanf("%d",&b);

         removeNode(b);

      }else if(a==3){

         display();

      }else{

         printf("다시 입력해주세요...\n");

      }

      

   }

   

}

 

 

큐형태의 단순열결리스트에 scanf를 입력하여 노드를 추가,삭제,출력 기능을 넣은 코드 입니다.

'기타 코드 낙서장 > 알고리즘' 카테고리의 다른 글

탐색이진트리 구현  (0) 2018.12.12