#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void line();
typedef struct DNode
{
struct DNode *llink;
char data[5];
struct DNode *rlink;
} DNode;
typedef struct Dlinked_h
{
DNode* head;
} Dlinked_h;
Dlinked_h* createDList_h(void)
{
Dlinked_h* L;
L = (Dlinked_h*)malloc(sizeof(Dlinked_h));
L->head = NULL;
return L;
}
DNode* searchNode(Dlinked_h* L,char* dt)
{
DNode* p;
p = L -> head;
if(p->rlink == NULL && p ->llink == NULL)
{
if(strcmp(p->data,dt)==0)
L->head=NULL;
}
while(1)
{
if(strcmp(p->data,dt)==0)
return p;
p = p ->rlink;
if(p -> rlink == NULL)
{
if(strcmp(p->data,dt)==0)
return p;
else
return 0;
}
}
}
void deleteNode(Dlinked_h* L, char* del_str)
{
DNode* old = searchNode(L,del_str);
if(old==0)
{
printf("no data\n");
return;
}
if(old->llink !=NULL)
old->llink->rlink = old->rlink;
else
L->head = old->rlink;
if(old->rlink!=NULL)
old->rlink->llink = old->llink;
view(L);
}
void LInsert(Dlinked_h* L, char* data)
{
DNode * newNode = (DNode*)malloc(sizeof(DNode));
strcpy(newNode->data, data);
newNode->rlink = L->head;
if(L->head !=NULL)
L->head->llink = newNode;
newNode ->llink = NULL;
L -> head = newNode;
}
void line(void)
{
printf("\n");
for(int i = 0; i < 100; i++)
{
printf("-");
}
printf("\n");
}
void view(Dlinked_h* L)
{
DNode* p;
p = L -> head;
if(p==NULL)
{
line();
printf("no data in list\n");
line();
}
else
{
line();
while( p -> rlink != NULL)
{
printf("%s ",p->data);
p = p ->rlink;
}
printf("%s\n ",p->data);
line();
}
}
int main()
{
Dlinked_h* L = createDList_h();
int n;
char s[10];
while(1)
{
printf("1. insert 2. Delete 3.View\n");
scanf("%d",&n);
if( n==1 )
{
printf("데이터를 입력하세요 : ");
scanf("%s",s);
LInsert(L,s);
view(L);
}
else if(n==2)
{
printf("삭제할 데이터를 입력하세요 : ");
scanf("%s",s);
deleteNode(L,s);
}
else if(n==3)
view(L);
}
return 0;
}