#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef int element;
typedef struct ListNode {
element data;
struct ListNode *link;
}ListNode;
ListNode *head = NULL;
//노드 생성
ListNode *create_node(element data, ListNode *link) {
ListNode *new_node;
new_node = (ListNode *)malloc(sizeof(ListNode));
new_node -> data = data;
new_node -> link = link;
return(new_node);
}
//특정 데이터를 가진 노드 삽입
void insert_node(ListNode *p, ListNode *new_node) {
if (head == NULL) {
new_node->link = NULL;
head = new_node;
}
else if (p == NULL) {
new_node->link = head;
head = new_node;
}
else {
new_node ->link = p->link;
p->link = new_node;
}
}
//특정 데이터를 가진 노드 삭제
void delete_node(int data) {
if (head == NULL)
return;
ListNode *p = head;
if (p->data == data) {
head = p->link;
free(p);
return;
}
while (p->link != NULL) {
if (p->link->data == data) {
ListNode *delete_node = p->link;
p->link = delete_node->link;
free(delete_node);
return;
}
p = p->link;
}
cout << "해당 데이터가 없습니다.";
return;
}
//모든 노드 출력
void print_list() {
ListNode *p = head;
if (p == NULL) {
cout << "해당 리스트는 비어있습니다.";
}
while (p != NULL) {
cout << p->data << " ";
p = p->link;
}
}
int main() {
ListNode *list1 = create_node(10, NULL);
ListNode *list2 = create_node(20, NULL);
ListNode *list3 = create_node(30, NULL);
insert_node(NULL, list1);
insert_node(list1, list2);
insert_node(list2, list3);
delete_node(30);
print_list();
}
'C++' 카테고리의 다른 글
[C++] 재귀호출로 배열의 합 구하기 (0) | 2020.08.05 |
---|---|
[C++] 재귀호출로 팩토리얼 구하기 (0) | 2020.08.05 |
[C++] 삽입정렬 코드 구현 (0) | 2020.08.04 |
[C++] 선택정렬 코드 구현 (0) | 2020.08.04 |
[C++] 이중 연결 리스트 생성, 삽입, 삭제, 출력 코드 구현 (0) | 2020.08.04 |