단순 연결 리스트
#Linked List
- 순차 자료구조에서의 연산 시간에 대한 문제와 저장 공간에 대한 문제를 개선한 자료 표현 방법
#삽입,삭제,정렬
typedef struct node
{
int data;
node* pNext;
};
void insert(node** head,int data);
void remove(node** head, int data);
void print(node* head);
void sort(node* head);
int main()
{
node* head = NULL;
int num,i,rm;
for(i=0; i<5; i++)
{
printf("Input : ");
scanf("%d",&num);
insert(&head,num);
}
print(head);
sort(head);
printf("=======After Sort======== \n");
print(head);
printf("remove data :");
scanf("%d",&rm);
remove(&head,rm);
printf("=======After remove======== \n");
print(head);
return 0;
}
void insert(node** head,int data)
{
node* newnode = (node*)malloc(sizeof(node));
newnode->pNext = NULL;
newnode->data = data;
if(*head==NULL)
*head = newnode;
else
{
newnode->pNext = *head;
*head = newnode;
}
}
void print(node* head)
{
node* pW;
pW = head;
while(pW)
{
printf("%d",pW->data);
pW = pW->pNext;
}
printf("\n");
}
void sort(node* head)
{
int temp;
node* pW1;
node* pW2;
pW1 = head;
pW2 = head;
while(pW1)
{
while(pW2)
{
if(pW1->data < pW2->data)
{
temp = pW1->data;
pW1->data = pW2->data;
pW2->data = temp;
}
pW2 = pW2->pNext;
}
pW1 = pW1->pNext;
pW2 = pW1;
}
}
void remove(node** head, int data)
{
node* pW;
node* pre;
pW = *head;
pre = pW;
if(pW->data == data)
{
*head = pW->pNext;
free(pW);
}
else
{
while(pW)
{
if(pW->data==data)
{
pre->pNext = pW->pNext;
break;
}
pre = pW;
pW = pW->pNext;
}
free(pW);
}
}