반응형
데이터 3 -> 2 -> 7 -> 8 ->5 를 입력하고 저장하면 역순인 5 -> 8 -> 7 -> 2 ->3 으로 저장되게 하는 예제
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct _node { //node 구조체 정의
int data;
struct _node* next;
}Node;
int main()
{
Node* head = NULL; //head 노드 선언
Node* tail = NULL; //tail 노드 선언
Node * cur = NULL; //cur 노드 선언, 저장된 데이터조회를 위한 변수
Node* newNode = NULL; //노드를 추가하기 위한 노드
int readData; //데이터를 저장하기 위한 변수
while (1) { //데이터를 입력하고 저장하는 while문
printf("데이터입력: ");
scanf("%d", &readData);
if (readData < 1) //데이터가 1보다작으면 반복문 종료
break;
newNode = (Node*)malloc(sizeof(Node)); //newNode 동적할당
newNode->data = readData; //scanf로 입력한 데이터를 newNode 데이터에 저장
newNode->next = NULL;
if (head == NULL) { //head가 NULL일경우에
head = newNode; //newNode를 head와 tail이 가리키게 한다.
tail = newNode;
}
else { //head가 NULL이 아닌경우에
newNode->next = head; //head를 newNode의 다음 노드로 가리키게한다.
head = newNode;
}
}
printf("\n");
printf("입력받은데이터출력:");
if (head == NULL)
printf("입력된데이터가 없습니다.\n");
else
{
cur = head; //cur에 head를 대입
printf("%d ", cur->data); //cur의 데이터 출력
while (cur->next != NULL) { //cur의 다음노드가 NULL일때까지 데이터출력
cur = cur->next;
printf("%d ", cur->data);
}
}
printf("\n");
if (head == NULL) //데이터삭제를 위한 조건문 시작
return 0;
else {
Node* delNode = head; //데이터삭제를 위한 노드
Node* delNextNode = head->next;
printf("%d를 삭제합니다.\n", head->data);
free(delNode);
while (delNextNode != NULL) { //다음노드가 NULL일때까지 데이터를 삭제
delNode = delNextNode;
delNextNode = delNextNode->next;
printf("%d를 삭제합니다.\n", delNode->data);
free(delNode);
}
}
return 0;
}
반응형
'Programming > Data Structure and Algorithm' 카테고리의 다른 글
자료구조 스택(Stack) 기초 개념정리 (0) | 2021.12.28 |
---|---|
자료구조 원형연결리스트 예제 (0) | 2021.12.28 |
자료구조 리스트(List) 기초 개념정리 (0) | 2021.12.25 |
윤성우의 열혈자료구조 문제 03-1 (0) | 2021.12.25 |
하노이탑 c언어 예제 (자료구조) (0) | 2021.12.23 |