8.26.2017

doublyLinkedList 자료구조

#include <stdio.h>
#include <stdlib.h>

typedef struct Test{
        int data;
        struct Test* next; //다음노드의 주소
        struct Test* prev; //이전 노드의 주소
}test;

void main() {
        test* head = (test*)malloc(sizeof(test));
        test* tail = (test*)malloc(sizeof(test));
     
        head->next = tail;
        tail->prev = head;

        test* newnode1 = (test*)malloc(sizeof(test));
        newnode1->next = tail;
        tail->prev = newnode1;
        head->next = newnode1;
        newnode1->prev = head;

        test* newnode2 = (test*)malloc(sizeof(test));
        newnode2->next = tail;
        tail->prev = newnode2;
        newnode1->next = newnode2;
        newnode2->prev = newnode1;

        test* newnode3 = (test*)malloc(sizeof(test));
        newnode3->next = tail;
        tail->prev = newnode3;
        newnode2->next = newnode3;
        newnode3->prev = newnode2;

        newnode1->data = 10;
        newnode2->data = 20;
        newnode3->data = 30;

        test* move = head->next;
        test* move2 = tail->prev;
        while (move != tail) {
                printf("%d", move->data);
                move = move->next;
        }printf("\n"); // 출력
        while (move2 != head) {
                printf("%d", move2->data);
                move2 = move2->prev;
        } printf("\n");
}

========================================================================
//함수 이용하기

#include <stdio.h>
#include <stdlib.h>

typedef struct Test{
        int data;
        struct Test* next; //다음노드의 주소
        struct Test* prev; //이전 노드의 주소
}test;

void input(testhead, int a) {
        test* newnode = (test*)malloc(sizeof(test));
        newnode->next = head->next;
        head->next->prev = newnode;
        head->next = newnode;
        newnode->prev = head;
        newnode->data = a;
}

void del_Node(testheadtest* tail, int b) {
        test* move = head->next;
        while (move != tail) {
                if (move->data == b) {
                        move = move->next;
                        move->next->next->prev = move->next->prev;
                        free(move);
                        break;
                }
        }
}

void main() {
        int del;
        test* head = (test*)malloc(sizeof(test));
        test* tail = (test*)malloc(sizeof(test));

        head->next = tail;
        tail->prev = head;

        input(head, 10);
        input(head, 20);
        input(head, 30);
        input(head, 40);
        input(head, 50);

        printf("입력\n");
        scanf("%d", &del);
        del_Node(head, tail, del);

        test* move = head->next;
        while (move != tail) {
                printf("%d ", move->data);
                move = move->next;
        }printf("\n");
}

댓글 없음:

댓글 쓰기