VioletaBabel

4일 : 단방향 리스트 본문

BCA/1. C,C++,C#
4일 : 단방향 리스트
Beabletoet 2018. 2. 8. 10:40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include<iostream>
using namespace std;
struct Data
{
    int value;
    Data* pNext;
};
int main()
{
    Data *pHead = NULL*pTemp, *pTemp2;
    int com = 0;
    bool in = 0;
    while (1)
    {
        cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n\n커맨드 입력 : ";
        cin >> com;
        if (com == 1)
        {
            cout << "값을 입력 : ";
            cin >> com;
            Data *pNewData = new Data;
            pNewData->pNext = NULL;
            pNewData->value = com;
            if (pHead == NULL)
                pHead = pNewData;
            else
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                    pTemp = pTemp->pNext;
                pTemp->pNext = pNewData;
            }
        }
        else if (com == 2)
        {
            cout << "삭제할 값 입력 : ";
            cin >> com;
            pTemp = pHead;
            if (pHead->value == com)
            {
                pHead = pHead->pNext;
                delete pTemp;
            }
            else
            {
                while (pTemp->value != com)
                {
                    if (pTemp->pNext != NULL)
                    {
                        pTemp2 = pTemp;
                        pTemp = pTemp->pNext;
 
                    }
                    else
                    {
                        in = 1;
                        break;
                    }
                }
                if (in)
                    cout << "삭제할 값이 없습니다." << endl;
                else
                {
                    pTemp2->pNext = pTemp->pNext;
                    delete pTemp;
                }
                in = 0;
            }
        }
        else if (com == 3)
        {
            if (pHead != NULL)
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                {
                    cout << pTemp->value << " ";
                    pTemp = pTemp->pNext;
                }
                cout << pTemp->value << endl;
            }
        }
        else if (com == 4)
        {
            pTemp = pHead;
            while (pTemp->pNext != NULL)
            {
                pTemp2 = pTemp;
                pTemp = pTemp->pNext;
                delete pTemp2;
            }
            delete pTemp;
            return 1;
        }
        else
            cout << "\n값을 잘못 입력하셨습니다!\n\n";
    }
}
cs

--위에꺼 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include<iostream>
using namespace std;
struct Data
{
    int value;
    Data* pNext;
};
int main()
{
    Data *pHead = NULL*pTemp, *pTemp2, *pNewData;
    int com = 0;
    bool in = 0;    
    while (1)
    {
        cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n\n커맨드 입력 : ";
        cin >> com;
        if (com == 1)
        {
            cout << "값을 입력 : ";
            cin >> com;
            pNewData = new Data;
            pNewData->pNext = NULL;
            pNewData->value = com;
            if (pHead == NULL)
                pHead = pNewData;
            else
            {
                cout << "\n어느 값 뒤에 넣으시겠습니까? ";
                cin >> com;
                pTemp = pHead;
                while (pTemp->value != com)
                {
                    if (pTemp->pNext != NULL)
                        pTemp = pTemp->pNext;
                    else
                    {
                        in = 1;
                        break;
                    }
                }
                if (in)
                    cout << "\n입력하신 값 앞에 존재해야 할 값이 없습니다." << endl;
                else
                {
                    pTemp2 = pTemp->pNext;
                    pTemp->pNext = pNewData;
                    pNewData->pNext = pTemp2;
                }
                in = 0;
            }
        }
        else if (com == 2)
        {
            cout << "삭제할 값 입력 : ";
            cin >> com;
            pTemp = pHead;
            if (pHead->value == com)
            {
                pHead = pHead->pNext;
                delete pTemp;
            }
            else
            {
                while (pTemp->value != com)
                {
                    if (pTemp->pNext != NULL)
                    {
                        pTemp2 = pTemp;
                        pTemp = pTemp->pNext;
 
                    }
                    else
                    {
                        in = 1;
                        break;
                    }
                }
                if (in)
                    cout << "삭제할 값이 없습니다." << endl;
                else
                {
                    pTemp2->pNext = pTemp->pNext;
                    delete pTemp;
                }
                in = 0;
            }
        }
        else if (com == 3)
        {
            if (pHead != NULL)
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                {
                    cout << pTemp->value << " ";
                    pTemp = pTemp->pNext;
                }
                cout << pTemp->value << endl;
            }
        }
        else if (com == 4)
        {
            pTemp = pHead;
            while (pTemp->pNext != NULL)
            {
                pTemp2 = pTemp;
                pTemp = pTemp->pNext;
                delete pTemp2;
            }
            delete pTemp;
            return 1;
        }
        else
            cout << "\n값을 잘못 입력하셨습니다!\n\n";
    }
}
cs

--위에 오류 수정


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include<iostream>
using namespace std;
struct Data
{
    int value;
    Data* pNext;
};
int main()
{
    Data *pHead = NULL*pTemp, *pTemp2, *pNewData;
    int com = 0;
    bool in = 0;    
    while (1)
    {
        cout << "\n\n1. 입력\n2. 삭제\n3. 출력\n4. 종료\n5. 삽입\n\n커맨드 입력 : ";
        cin >> com;
        if (com == 1)
        {
            cout << "값을 입력 : ";
            cin >> com;
            pNewData = new Data;
            pNewData->pNext = NULL;
            pNewData->value = com;
            if (pHead == NULL)
                pHead = pNewData;
            else
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                    pTemp = pTemp->pNext;
                pTemp->pNext = pNewData;
            }
        }
         else if (com == 5)
        {
            cout << "값을 입력 : ";
            cin >> com;
            pNewData = new Data;
            pNewData->pNext = NULL;
            pNewData->value = com;
            if (pHead == NULL)
                pHead = pNewData;
            else
            {
                cout << "\n어느 값 뒤에 넣으시겠습니까? ";
                cin >> com;
                pTemp = pHead;
                while (pTemp->value != com)
                {
                    if (pTemp->pNext != NULL)
                        pTemp = pTemp->pNext;
                    else
                    {
                        in = 1;
                        break;
                    }
                }
                if (in)
                    cout << "\n입력하신 값 앞에 존재해야 할 값이 없습니다." << endl;
                else
                {
                    pTemp2 = pTemp->pNext;
                    pTemp->pNext = pNewData;
                    pNewData->pNext = pTemp2;
                }
                in = 0;
            }
        }
        else if (com == 2)
        {
            cout << "삭제할 값 입력 : ";
            cin >> com;
            if (pHead != NULL)
            {
                pTemp = pHead;
                if (pHead->value == com)
                {
                    pHead = pHead->pNext;
                    delete pTemp;
                }
                else
                {
                    while (pTemp->value != com)
                    {
                        if (pTemp->pNext != NULL)
                        {
                            pTemp2 = pTemp;
                            pTemp = pTemp->pNext;
                        }
                        else
                        {
                            in = 1;
                            break;
                        }
                    }
                    if(!in)
                    {
                        pTemp2->pNext = pTemp->pNext;
                        delete pTemp;
                    }
                }
            }
            else
                in = 1;
            if (in)
                cout << "삭제할 값이 없습니다." << endl;
            in = 0;
        }
        else if (com == 3)
        {
            if (pHead != NULL)
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                {
                    cout << pTemp->value << " ";
                    pTemp = pTemp->pNext;
                }
                cout << pTemp->value << endl;
            }
            else
            {
                cout << "출력할 값이 없습니다." << endl;
            }
        }
        else if (com == 4)
        {
            if (pHead != NULL)
            {
                pTemp = pHead;
                while (pTemp->pNext != NULL)
                {
                    pTemp2 = pTemp;
                    pTemp = pTemp->pNext;
                    delete pTemp2;
                }
                delete pTemp;
            }
            return 1;
        }
        else
            cout << "\n값을 잘못 입력하셨습니다!\n\n";
    }
}
cs


Comments