사용자로부터 정수 값을 입력받아 단일 연결 리스트로 생성한다. 리스트 노드는 입력받은 순서대로 연결한다. 단일 연결 리스트 삽입 함수를 사용한다.(교재 참고) display() 함수에 의해 각 노드의 내용을 출력한다. (교재 참고) - 입력을 끝내기 위해 마지막에 -1을 입력한다. - ListNode 타입을 정의하여 사용한다. - 동적 메모리 할당을 사용한다. <입출력 예1> 15 25 70 5 10 -1 15 25 70 5 10 <입출력 예2> 7 20 12 -1 7 20 12 |
#include <stdio.h>
#include <stdlib.h>
typedef struct List{
int data;
struct List *link;
} ListNode;
void display(ListNode *h)
{
while (h != NULL) {
printf("%d ", h->data);
h = h->link;
}
printf("\n");
}
void insert_node(ListNode **phead ,ListNode *p ,ListNode *new_node)
{
if (*phead == NULL){
new_node->link = NULL;
*phead = new_node;
}
else if (p==NULL){
new_node->link = *phead;
*phead = new_node;
}
else {
new_node->link = p->link;
p->link = new_node;
}
}
int main()
{
ListNode *head = NULL;
ListNode *p, *new_node;
int data;
// 사용자 입력, 노드 생성, 리스트 삽입
p = head;
do {
scanf("%d", &data);
if (data == -1) break;
// 새 노드를 위한 동적 메모리 할당
new_node = (ListNode *) malloc(sizeof(ListNode));
// 사용자가 입력한 데이터를 노드에 자료 저장
new_node->data = data;
// 새 노드를 리스트에 삽입 : insert_node() 이용
insert_node(&head, p, new_node);
p = new_node;
} while (1);
// 출력
display(head);
}
'Language > C' 카테고리의 다른 글
[C/C++] 이중 LinkedList 구현 예제 (0) | 2021.10.14 |
---|---|
[C] Linked List - 삽입, 삭제, 순회 (0) | 2021.10.04 |
[C] 구조체, 포인터 (0) | 2021.09.20 |