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;
}
}
}
'Programming Language > C and Cpp' 카테고리의 다른 글
C++ 콘솔 급여관리 프로그램(스압) Linked List 사용 (0) | 2019.06.01 |
---|---|
C언어 배열과 주소 표현식에 대해 아라보자 (0) | 2019.05.18 |
C언어 배열과 포인터 문제 (0) | 2019.05.17 |
C++ String 구현 해 보기 (0) | 2019.02.21 |
C언어로 버블 정렬 구현하기 (0) | 2019.02.01 |
사이트의 정보
코딩하렴
으렴