코딩하렴

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;
		}
	}
}

사이트의 정보

코딩하렴

으렴

활동하기