Singly Linked List - prepend()

woongaaaa·2024년 4월 6일
0

자료구조

목록 보기
2/5

2번문제 ADT

list.h


#ifndef ASSIGNMENT_LIST_H
#define ASSIGNMENT_LIST_H

class Node{
private:
    int data;
    Node *next;
    friend class LinkedList;
};

class LinkedList {
public:
    LinkedList() {
        head = nullptr;
    }
    void prepend(int data);
    void append(int data);
    int length();
    void print();

private:
    Node *head;

};

list.cpp

#include "list.h"
#include "iostream"

void LinkedList::prepend(int data) {
    Node *newNode = new Node();
    newNode->data = data;
    newNode->next = head;
    head = newNode;
}

void LinkedList::append(int data) {
    Node *newNode = new Node();
    newNode->data = data;
    newNode->next = nullptr;
    if(head == nullptr){
        head = newNode;
    }else {
        Node *currentNode = head;
        while (currentNode->next != nullptr) {
            currentNode = currentNode->next;
        }
        currentNode->next = newNode;
    }
}

int LinkedList::length() {
    int count = 0;
    Node* currentNode = head;
    while(currentNode != nullptr) {
        count ++;
        currentNode = currentNode->next;
    }
    return count;
}

void LinkedList::print() {
    Node* currentNode = head;
    while (currentNode != nullptr) {
        std::cout << currentNode->data << " ";
        currentNode = currentNode->next;
    }
    std::cout << "\n";
}
  • prepend()에선 새로운 노드를 head로 설정하고, 새로운 노드의 next를 기존 head로 설정한다.

0개의 댓글