728x90
반응형
https://www.evernote.com/shard/s364/sh/3074b3c1-c6bf-4fa2-bc60-36cfad24ce24/7f2295d30a63f165
위에 링크들어가셔야 정리된거 있습니다!!!
소스
#include <stdio.h> #include <stdlib.h> #pragma pack (1) typedef struct _node{ int inum; struct _node * stNext; }Node; #pragma pack (4) void node_print(Node * temp); void node_free(Node * head); /* Node * node_insert(Node * stHead){ Node * stTemp = 0; stTemp = malloc(sizeof(Node)); stHead = stTemp; node_init(stTemp); return stHead; } */ Node node_init(Node * stTemp) { if (stTemp == 0) { printf("연결된 노드가 없습니다.\n"); return ; } printf("노드에 삽입될 정수를 입력하세요 : "); scanf("%d", &stTemp->inum); stTemp->stNext = 0; } void node_insert(Node ** stHead){ Node * stTemp = 0; Node * stESeeker=0; if (stHead == 0) { //제대로 된 연결리스트가 왔느냐 확인, &head를 받음 printf("전달받은 노드가 존재하지 않습니다.\n"); return; } stTemp = malloc(sizeof(Node)); node_init(stTemp); if (*stHead == 0){//처음에 사용하는 경우, head가 0과 같느냐 *stHead = stTemp; //head의 값이 생기는 순간, 연결리스트 하나 추가 return; } //처음만! stESeeker = *stHead; while(1) { if(stESeeker->stNext==0) { stESeeker->stNext=stTemp; break; } stESeeker=stESeeker->stNext; } return ; // (*stHead)->stNext = stTemp; } /* void node_insert2(Node ** stHead) { } */ void node_insert3(Node ** stHead) { Node * stTemp = 0; Node * stESeeker=0; if (stHead == 0) { //제대로 된 연결리스트가 왔느냐 확인, &head를 받음 printf("전달받은 노드가 존재하지 않습니다.\n"); return; } stTemp = malloc(sizeof(Node)); node_init(stTemp); if (*stHead == 0){//처음에 사용하는 경우, head가 0과 같느냐 *stHead = stTemp; //head의 값이 생기는 순간, 연결리스트 하나 추가 return; } if(stTemp->inum < (*stHead)->inum) { stTemp->stNext = *stHead; *stHead = stTemp; return ; } } int main(){ Node * head = 0; // node_insert(head); node_insert3(&head); node_insert3(&head); /* head = malloc(sizeof(Node)); head->inum = 100; head->stNext = malloc(sizeof(Node)); head->stNext->inum = 200; head->stNext->stNext = malloc(sizeof(Node)); head->stNext->stNext->inum = 300; head->stNext->stNext->stNext = 0; */ node_print(head); node_free(head); return 0; } void node_print(Node * temp){ while (temp != 0){ printf("%d -> ", temp->inum); temp = temp->stNext; } if (temp == 0){ printf("NULL\n"); } } void node_free(Node * head){ Node * temp = 0; while (head != 0){ temp = head->stNext; printf("[%d] Node Free\n", head->inum); free(head); head = temp; } printf("\n"); } |
728x90
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150515 - 11번 - 남수진 - CTC 모드 타이머/ 도서관리프로그램 (8) | 2015.05.16 |
---|---|
2015-05-13 업무일지 연결리스트 (6) | 2015.05.13 |
연결리스트 - insert3 함수 (2) | 2015.05.13 |
다들 아시는거 일지 모르지만 vi랑 윈도우 사이 복붙 Tip (2) | 2015.05.13 |
20150511-7번-김재홍-PWM / C 연결리스트 (11) | 2015.05.12 |
20150508 -6번 -김성현 ADC차동입력, 아날로그 비교기 및 Linked list (4) | 2015.05.11 |
20150507 - 3번 - 김성주 - 업무일지 - H/W 전압 측정, S/W 파일의 분할과 헤더파일 & 가변인자 & 연결리스트 (9) | 2015.05.07 |
A/D 컨버터를 활용한 LCD문자.. / 메모리의 동적 할당, C언어의 메모리 구조 (8) | 2015.05.06 |