/*

 * ddd.c

 *

 *  Created on: 2014. 4. 16.

 *      Author: CSE

 */



#include <stdio.h>

#include <stdlib.h>

#include <memory.h>

#include <string.h>


typedef int element;

typedef struct DlistNode {

element data;

struct DlistNode *llink;

struct DlistNode *rlink;

}DlistNode;


void init(DlistNode *phead){

phead->llink = phead;

phead->rlink = phead;

}


void display(DlistNode *phead){

DlistNode *p;

for(p=phead -> rlink; p != phead ; p = p->rlink){

printf("%d ->",p->data);

}

printf("\n");

}


void reverse_display(DlistNode *phead){

DlistNode *p;

for(p=phead ->llink; p != phead ; p = p ->llink){

printf("%d ->",p->data);

}

printf("\n");

}

void dinsert_node(DlistNode *before, DlistNode *new_node){

DlistNode *p = before;

new_node -> llink = p;

new_node -> rlink = p-> rlink;

p -> rlink -> llink = new_node;

p -> rlink = new_node;

}


void dremove_node (DlistNode *before, DlistNode *removed){

DlistNode *p = before;

if( removed == p) return;

removed -> llink -> rlink = removed->rlink;

removed -> rlink -> llink = removed->llink;

free(removed);

}


int main (void){

DlistNode *o;

DlistNode head_node;

o = &head_node;

DlistNode *p[10];

int i;

init(o);

for(i = 0; i<5; i++){

p[i] = (DlistNode *)malloc(sizeof(DlistNode));

p[i] -> data = i;

dinsert_node(o,p[i]);


}

dremove_node(o,p[4]);

display(o);

reverse_display(o);


return 0;

}



'개발 > Algorithm' 카테고리의 다른 글

이중 연결 리스트 시험  (1) 2014.04.24
단순 연결리스트의 구조체 헤드포인터 미완  (0) 2014.04.22
단순연결리스트 - 3  (0) 2014.04.14
원형 연결 리스트  (0) 2014.04.14
Orwell Dev C++  (0) 2014.04.10
블로그 이미지

잉비니

,