/*
* 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 |