#include #include #include 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; } ListNode* find_node(ListNode *head,char *name) { for (ListNode *p = head; p != NULL; p = p->link) if (!strcmp(p->data.name, name)) return p; return NULL; } // Å×½ºÆ® ÇÁ·Î±×·¥ int main(void) { ListNode *head = NULL, *pre; 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); pre = find_node(head, "À¯°ü¼ø"); if (pre != NULL) { new = new_element("À̼ø½Å", 172, 83.4); head = insert(head, pre, *new); } print_list(head); return 0; }