연결 리스트의 각 자료를 노드라고 부름.
typedef struct node {
int value;
node_t* next;
} node_t;
void print_node(const node_t* head)
{
node_t* p;
p = head;
while (p != NULL) {
/*여기서 출력*/
p = p->next;
}
}
동적할당해서 대입할 것임.free()void destroy(node_t* head){
node_t* p = head;
while (p != NULL) {
node_t* next = p->next;
free(p);
p = next;
}
}
/*메인함수*/
node_t* head = NULL;
/*코드*/
destroy(head);
head = NULL;
void insert_front(node_t** phead, int n)
{
node_t* new_node;
new_node = malloc(sizeof(node_t));
new_node->value = n;
new_node->next = *phead;
*phead = new_node;
}
/*메인함수*/
node_t* head = NULL;
insert_front(&head, 3);
insert_front(&head, 5);
insert_front(&head, 2);
insert_front(&head, 0);
destroy(head);
head = NULL;
void insert_sorted(node_t** phead, int n)
{
node_t** pp;
node_t* new_node;
new_node = malloc(sizeof(node_t));
new_node->value = n;
pp = phead;
while (*pp != NULL) {
if ((*pp)->value >= n){
break;
}
pp = &(*pp)->next;
}
new_node->next = *pp;
*pp = new_node;
}
int main(void)
{
node_t* head = NULL;
insert_front(&head, 3);
insert_front(&head, 5);
insert_front(&head, 2);
insert_front(&head, 0);
destroy(head);
head = NULL;
}
void remove(node_t** phead, int n)
{
node_t** pp;
pp = phead;
while (*pp != NULL) {
if ((*pp)->value == n) {
node_t* tmp = *pp;
*pp = (*pp)->next;
free(tmp);
break;
}
pp = &(*pp)->next;
}
}
int main(void)
{
node_t* head = NULL;
remove(&head, 2);
remove(&head, 5);
destroy(head);
head = NULL;
}