Single Linked List만들기
by 으렴헤드를 먼저 잡고 5번만 돌아가는 single linked list를 만들었다.
넘나 간만이네><
이거 찬찬히 짜보면서 디버깅도하고
C에 대한 기억을 새록새록 다시 꺼내는 중...
자료구조를 또 열심히 함 봐야겠내>.<
5개만 연결 시키게 만들어따리~~~~
#include<stdio.h> #include<stdlib.h> #define _CRT_SECURE_NO_WARNINGS typedef struct node { //구조체 슨생님 char name[5]; struct node* next; }NODE; void main() { NODE * head, //노드의 젤 첫 부분을 잡아준다 * cur, //new1 항상 새로운 노드를 잡아줌 * new1; //위 세가지 이외의 모든 작업 head = cur = new1 = NULL; //헤더만들어줄거얌 if ((head = new1 = (NODE*)calloc(1, sizeof(NODE))) == NULL) { puts("memory err"); exit(-1); } // new1->name[0] = 'h'; //직접 넣을 때는 이렇게 잡아줘야한다 // strcpy(new1->name, "asdfger"); //오버플로우 발생가능성 strncpy(new1->name, "header",sizeof(new1->name)); //그 사이즈대로 잡아줌 오버플로우 안생긴다 printf("head가 만들어졌습니다.\n"); head->next = NULL; //헤더 작업 끝나쩌 for (int i = 0;i < 5;i++) { if (( new1 = (NODE*)calloc(1, sizeof(NODE))) == NULL) { puts("memory err"); exit(-1); } printf("name num input : "); scanf_s("%s", new1->name,5); new1->next = NULL;//new1의 뒤는 널 cur = head;//커서를 헤드로 두고 검색함 while (cur->next != NULL) { cur = cur->next; //여기서 제일 끝노드를 찾을거야 } new1->next = cur->next; // new1이 생기면 끝부터 잡아주자 cur->next = new1; //그리고 앞쪽을 잡을거야 cur = head; //커서는 다시 헤드로 while (cur != NULL) { printf("%s\n", cur->name); cur = cur->next; } } }
사이트의 정보
코딩하렴
으렴활동하기
코딩하렴으렴 님의 블로그입니다.