반응형
연결리스트 만들고 출력하기
- 아래 구조체를 사용하여, 정수 10, 20, 30, 40, 50, 60, 70, 80으로 구성된 연결리스트를 만들고
- 시작 노드의 주소를 헤드 포인터 head에 연결시키시오.
class Node {
int score;
Node *link;
};
- 또한 head를 시작으로 연결리스트의 노드들을 따라가면서 각 노드의 값을 출력하시오.
- 10, 20, 30, 40, 50, 60, 70, 80 이 출력되는지 확인하시오.
- 배열은 사용하지 말고, 연결 리스트만 사용하시오.
- 주어진 값 대신 값을 입력 받도록 수정해 보시오.
#include <iostream>
using namespace std;
class Node {
public:
int score; //점수
Node *link; //다음 노드 주소
};
Node *Head = NULL;
//리스트 마지막에 노드 삽입 방법
void insert_at_rear(Node *new_node) {
if (Head == NULL) {
Head = new_node;
}
else {
//마지막 노드를 찾고, 그 노드 뒤에 new_node 연결
Node *list = Head; //list는 포인터이며 초기값은 head
while (list->link != NULL) //list의 link값이 null일 경우 끝남
list = list->link;
list->link = new_node;
}
}
Node *MakeNewNode(int score) { //노드를 하나 동적 할당, 값 초기화
// 리턴하는 값이 Node에 대한 포인트이므로 "*"MakeNewNode라 함.
Node *ptr;
ptr = new Node();
ptr->score = score;
ptr->link = NULL;
return ptr;
}
void printNodes(Node *head) {
for (Node *list = head; list != NULL; list = list->link)
cout << list->score << endl;
}
int main() {
// Node *Head = NULL; //전역변수로 이동
Node *new_node;
new_node = MakeNewNode(10); //값이 10인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(20); //값이 20인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(30); //값이 30인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(40); //값이 40인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(50); //값이 50인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(60); //값이 60인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(70); //값이 70인 노드 생성
insert_at_rear(new_node);
new_node = MakeNewNode(80); //값이 80인 노드 생성
insert_at_rear(new_node);
printNodes(Head);
}
반응형
'공부 > 자료구조 | 알고리즘' 카테고리의 다른 글
[자료구조] 연결리스트 역순 연산 (0) | 2019.08.04 |
---|---|
[자료구조] 연결리스트 노드 삭제 (0) | 2019.08.03 |
[자료구조] 단순 연결리스트 노드 삽입 (0) | 2019.07.30 |
[자료구조] 단순 연결리스트 (0) | 2019.07.25 |
[자료구조] 배열과 포인터 / 2차원 배열과 포인터 예제 (0) | 2019.07.24 |