본문 바로가기

[C언어]

[c언어] Node를 활용한 연결리스트

 

typedef struct _node {
	int data;
	struct _node * next;//다음껄로 이어지는 주소값을 _node안에 저장하겠다.
} Node; //이를 편하게 Node라고 저장하겠다.


int NodeCall() {

	Node * head = NULL;
	Node * tail = NULL;
	Node * cur = NULL;

	Node * newNode = NULL;
	int readData;

	while (1) {
		printf("자연수 입력");
		scanf_s("%d", &readData);
		if (readData < 1)
			break;

		newNode = (Node*)malloc(sizeof(Node));//Node만큼의 메모리값을 할당
		newNode->data = readData;
		newNode->next = NULL;


		if (head = NULL) {
			head = newNode;
			printf("여기까지 ok");

		}
		else
			tail->next = newNode;

		tail = newNode;//꼬리부분을 재정의 해주는것이다.


	}
	printf("\n");


	printf("입력 받은 데이터 전체 출력\n");
	if (head == NULL) {
		printf("공백상태");
	}

	else {
		cur = head;
		printf("%d", cur->data);

		while (cur->next != NULL){//NULL이 아니라면 계속해서 반복 
			cur = cur->next;
			printf("%d", cur->data);
		}

	}

	printf("\n\n");

	if (head == NULL)
		return 0l;

	else {
		Node * delNode = head;
		Node * delNextNode = head->next;

		printf("%d를 삭제합니다\n", head->data);
		free(delNode);

		while (delNextNode != NULL) {//while 문은 조건식이 TRUE일 경우 계속 반복한다.

			delNode = delNextNode;
			delNextNode = delNextNode->next;

			printf("%d를 삭제합니다\n", delNode->data);
			free(delNode);
		}

	}

	return 0;
}





int main() {
	NodeCall();
	


	return 0;
}

c언어 자료구조에서 기본이되는 Node구조입니다.

참고 부탁드리겠습니다.