반응형
#include <stdio.h>
#include <stdlib.h> //malloc 함수를 쓰기 위해 포함
typedef struct _NODE
{
char Data;
struct _NODE *Next;
struct _NODE *Prev;
} NODE;
NODE *head, *end, *temp;
NODE *temp1, *temp2, *temp3, *temp4;
void Initialize(void);
void InsertNode(NODE *);
void DeleteNode(NODE *);
void main()
{
NODE *ptr;
int i=0;
Initialize();
ptr=head->Next;
for(i=0; i<4; i++)
{
printf("%2c", ptr->Data);
ptr=ptr->Next;
}
/* 새로운 노드 생성 */
printf("\n");
temp=(NODE *)malloc(sizeof(NODE));
temp->Data='C';
/* 새로 생성한 노드의 삽입 */
InsertNode(temp);
/* 연결 리스트의 노드에 저장한 데이터의 출력 */
printf("\n\n노드 C의 삭제 전 \n");
ptr=head->Next;
for(i=0; i<5; i++)
{
printf("%2c", ptr->Data);
ptr=ptr->Next;
}
/* 노드의 삭제 */
DeleteNode(temp);
/* 연결 리스트의 노드에 저장된 데이터 출력 */
printf("\n\n노드 C의 삭제 후 \n");
ptr = head ->Next;
for(i=0; i<4; i++)
{
printf("%2c", ptr->Data);
ptr=ptr->Next;
}
}
void Initialize(void)
{
NODE *ptr;
head=(NODE *)malloc(sizeof(NODE));
end=(NODE *)malloc(sizeof(NODE));
temp1=(NODE *)malloc(sizeof(NODE));
temp1->Data='A';
head->Next=temp1;
temp1->Next=end;
temp1->Prev=head;
end->Next=end;
ptr=temp1;
temp2=(NODE *)malloc(sizeof(NODE));
temp2->Data='B';
ptr->Next=temp2;
temp2->Next=end;
temp2->Prev=ptr;
ptr=temp2;
temp3=(NODE *)malloc(sizeof(NODE));
temp3->Data='D';
ptr->Next=temp3;
temp3->Next=end;
temp3->Prev=ptr;
ptr=temp3;
temp4=(NODE *)malloc(sizeof(NODE));
temp4->Data='E';
ptr->Next=temp4;
temp4->Next=end;
temp4->Prev=ptr;
ptr=temp4;
}
void InsertNode(NODE *ptr)
{
NODE *indexptr;
for(indexptr=head; indexptr !=end; indexptr=indexptr->Next)
{
if(indexptr->Data < ptr->Data && indexptr->Next->Data > ptr->Data)
break;
}
ptr ->Next=indexptr->Next;
indexptr->Next->Prev=ptr;
indexptr->Next=ptr;
ptr->Prev=indexptr;
}
void DeleteNode(NODE *ptr)
{
NODE *indexptr;
NODE *deleteptr;
for(indexptr=head; indexptr !=end; indexptr=indexptr->Next)
{
if(indexptr -> Next ->Data == ptr->Data)
{
deleteptr=indexptr->Next;
break;
}
}
indexptr ->Next=indexptr->Next->Next;
indexptr->Next->Next->Prev=indexptr;
free(deleteptr);
}
반응형
'Programings > Data Structs' 카테고리의 다른 글
RVector (0) | 2015.10.20 |
---|---|
[Data Struct] 큐 (Queue) - 링크드 리스트를 이용한 큐 (2) | 2010.08.17 |
[Data Struct] 스택 (Queue) - 배열을 이용한 스택 (0) | 2010.08.17 |
[Data Struct] 스택 (Stack) - 링크드 리스트를 이용한 스택 (0) | 2010.08.12 |
[Data Struct] 단순 링크드 리스트 (0) | 2010.08.12 |