편집 기록

편집 기록
  • 프로필 정토드님의 편집
    날짜2017.04.11

    linked list k번째 element 찾아서 지우기(c++)


    Singly Linked List 에 주어진 List 의 element(e1,e2, ... , en)들을 chain 형식으로 node들을 연결하고 element (e1, ... , en)들을 저장하는 프로그램을 짜는 것입니다. (Singly Linked List의 마지막 노드의 Link는 반드시 Null이여야 합니다.)

    문제가 위와 같은데 제가 아래와 같이 한번 짜봤습니다.

    #include <iostream>
    #include <stdlib.h>
        using namespace std;
    
        class LinkedList {
            struct Node {
                int x;
                Node *next;
            };
        public:
            LinkedList() {
                head = NULL; 
            }
            void addValue(int val) {
                Node *n = new Node();   
                n->x = val;            
                n->next = head;        
    
                head = n;               
            }
        private:
            Node *head;
        };
    
        int main() {
            LinkedList list;
            cout << " 입력할 LIst의 개수는?";
            int n;
            cin >> n;
            if (n <= 0) return 0;
            int *p = new int[n];
            for (int i = 0; i < n; i++) {
                list.addValue(p[i]);
            }
        }
    

    위의 프로그램에서

    k번째 노드를 삭제하는 프로그램

    k번째 노드와 k+1번째 노드 사이에 새로운 노드를 추가하는 프로그램

    을 짜는데

    1.삭제하는 노드의 포인터값을 어떻게 받는지 모르겠습니다.

    2.삭제 할때 delete를 쓰면 그 노드의 데이터 값이 완전히 지워지는 겁니까?

    프로그램예시 좀 들어주셨으면 합니다. 공부에 참고 하겠습니다.

  • 프로필 jvahew님의 편집
    날짜2017.04.11

    linked list 질문 c++


    Singly Linked List 에 주어진 List 의 element(e1,e2, ... , en)들을 chain 형식으로 node들을 연결하고 element (e1, ... , en)들을 저장하는 프로그램을 짜는 것입니다. (Singly Linked List의 마지막 노드의 Link는 반드시 Null이여야 합니다.)

    문제가 위와 같은데 제가 아래와 같이 한번 짜봤습니다.

    include

    include

    using namespace std;
    
    class LinkedList {
        struct Node {
            int x;
            Node *next;
        };
    public:
        LinkedList() {
            head = NULL; 
        }
        void addValue(int val) {
            Node *n = new Node();   
            n->x = val;            
            n->next = head;        
    
            head = n;               
        }
    private:
        Node *head;
    };
    
    int main() {
        LinkedList list;
        cout << " 입력할 LIst의 개수는?";
        int n;
        cin >> n;
        if (n <= 0) return 0;
        int *p = new int[n];
        for (int i = 0; i < n; i++) {
            list.addValue(p[i]);
        }
    }
    

    위의 프로그램에서

    k번째 노드를 삭제하는 프로그램

    k번째 노드와 k+1번째 노드 사이에 새로운 노드를 추가하는 프로그램

    을 짜는데

    1.삭제하는 노드의 포인터값을 어떻게 받는지 모르겠습니다.

    2.삭제 할때 delete를 쓰면 그 노드의 데이터 값이 완전히 지워지는 겁니까?

    프로그램예시 좀 들어주셨으면 합니다. 공부에 참고 하겠습니다.