□ n개의 정수 데이터가 임의의 순서로 주어질 때, 이를 1차원 배열에 임시로 저장한 후 단순 연결리스트 뒤쪽에 차례로
삽입한다.
□ 또한, 주어지는 키(key)값이 있는 노드를 순차 탐색에 의해 찾아 연결리스트에서 제거한 후, 이 리스트를 처음부터 다시
방문하여 각 노드의 데이터를 차례로 출력한다. (키가 없는 경우는 “키가 없음”을 출력함)
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int data;
struct ListNode *link;
}ListNode;
int main() {
int n, newNum, remove;
scanf("%d", &n);
int *num = (int *)malloc(sizeof(int)*n);
for (int i = 0; i < n; i++) {
scanf("%d", &newNum);
num[i] = newNum;
}
ListNode *pre = (ListNode *)malloc(sizeof(ListNode));
pre->data = num[0];
pre->link = NULL;
ListNode *head = (ListNode *)malloc(sizeof(ListNode));
head = pre;
for (int i = 1; i < n; i++) {
ListNode *p = (ListNode *)malloc(sizeof(ListNode));
p->data = num[i];
p->link = NULL;
pre->link = p;
pre = p;
}
pre = head;
while (pre != NULL) {
printf("%d ", pre->data);
pre = pre->link;
}
printf("\nremove: ");
scanf("%d", &remove);
ListNode *ppre = (ListNode *)malloc(sizeof(ListNode));
ppre = head;
pre = ppre->link;
while (pre != NULL) {
if (head->data == remove) {
head = ppre->link;
break;
}
if (pre->data == remove) {
ppre->link = pre->link;
}
pre = pre->link;
ppre = ppre->link;
}
pre = head;
while (pre != NULL) {
printf("%d ", pre->data);
pre = pre->link;
}
}