본문 바로가기

자료구조

더블 링크드 리스트


더블 링크드 리스트(Double Linked List)

기본 뼈대, 핵심.
이정도 이해,구현이 가능하다면 Delete 등의 구현도 어렵지 않다.

#include <stdio.h>

#include <stdlib.h>

typedef struct Node

{

        int bookNum;

        struct Node * next;

        struct Node * pre;

}Book;

 

Book* CreateNewNode( Book * myBook, int data) //노드생성

{

        myBook = (Book*)malloc(sizeof(Book)); myBook->bookNum = 0;

        myBook->next = NULL;

        myBook->pre = NULL;

        myBook->bookNum = data;

        return myBook;

}

 

void InsertNode(Book** phead, Book* newNode) //노드 삽입

{

        if(*phead == NULL)

               *phead = newNode;

        else

        {

               newNode->next = *phead;

               (*phead)->pre = newNode;

               *phead = newNode;

        }

 

}

 

void ShowList(Book** phead) //리스트 보여주기

{

        Book * tail = NULL;

        int index = 0;

        for(tail = *phead ; tail !=NULL; tail = tail->next)

        {

               index++;

               printf("[%d]번째 -> %d \n", index, tail->bookNum);

        }

 

}

void main()

{

 

        Book * phead = NULL;

        Book * NewNode = NULL;

 

        int data=0;

        printf("입력하셈 !!!");

 

        scanf("%d", &data);

        NewNode = CreateNewNode(NewNode, data);

        InsertNode(&phead, NewNode);

 

        scanf("%d", &data);

        NewNode = CreateNewNode(NewNode, data);

        InsertNode(&phead, NewNode);

 

        ShowList(&phead);

 

 

}

 

 

 

'자료구조' 카테고리의 다른 글

우선순위 큐  (0) 2012.02.18
퀵소트 구현 소스  (6) 2012.02.18