#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student_info {
char name[10];
int height;
float weight;
} element;
typedef struct ListNode { // ³ëµå ŸÀÔÀ» ±¸Á¶Ã¼·Î Á¤ÀÇÇÑ´Ù.
element data;
struct ListNode *link;
} ListNode;
ListNode* insert_first(ListNode *head, element value)
{
ListNode *p = (ListNode *)malloc(sizeof(ListNode));//(1)
p->data = value; // (2)
p->link = head; //(3)
head = p; //(4)
return head;
}
// ³ëµå pre µÚ¿¡ »õ·Î¿î ³ëµå »ðÀÔ
ListNode* insert(ListNode *head, ListNode *pre, element value)
{
ListNode *p = (ListNode *)malloc(sizeof(ListNode)); //(1)
p->data = value; //(2)
p->link = pre->link; //(3)
pre->link = p; //(4)
return head; //(5)
}
ListNode* delete_first(ListNode *head)
{
ListNode *removed;
if (head == NULL) return NULL;
removed = head; // (1)
head = removed->link; // (2)
free(removed); // (3)
return head; // (4)
}
// pre°¡ °¡¸®Å°´Â ³ëµåÀÇ ´ÙÀ½ ³ëµå¸¦ »èÁ¦ÇÑ´Ù.
ListNode* delete(ListNode *head, ListNode *pre)
{
ListNode *removed;
removed = pre->link;
pre->link = removed->link; // (2)
free(removed); // (3)
return head; // (4)
}
void print_list(ListNode *head)
{
for (ListNode *p = head; p != NULL; p = p->link)
printf("(%s %3d %4.1f)->", p->data.name, p->data.height, p->data.weight);
printf("\n");
}
element* new_element(char *name, int height, float weight)
{
element *p = (element *)malloc(sizeof(element)); //(1)
strcpy(p->name, name);
p->height = height;
p->weight = weight;
return p;
}
// Å×½ºÆ® ÇÁ·Î±×·¥
int main(void)
{
ListNode *head = NULL;
element* new;
new = new_element("È«±æµ¿", 167, 72.5);
head = insert_first(head, *new);
new = new_element("À¯°ü¼ø", 163, 58.4);
head = insert_first(head, *new);
new = new_element("±èÀ¯½Å", 159, 70.8);
head = insert_first(head, *new);
print_list(head);
head = delete_first(head);
print_list(head);
return 0;
}