본문 바로가기
공부

단일 연결 리스트를 이용하여 키보드로 입력받은 영문자를 저장하고 특정 영문자를 삭제하는 리스트 ADT를 구현하시오.

by 혼밥맨 2022. 4. 29.
반응형

단일 연결 리스트를 이용하여 키보드로 입력받은 영문자를 저장하고 특정 영문자를 삭제하는 리스트 ADT를 구현하시오.

 

◦ 다음 연산을 지원한다.
- addLastNode(list, e) : 원소 e를 추가한다.
- searchRemove(list, e) : 특정 원소 e를 리스트에서 삭제한다.
- print(list) : list의 모든 원소를 공백없이 출력한다.
※ 특정 원소 e가 없다면 화면에 에러 메시지 "not find" 출력하고, 해당 연산을 무시한다.
◦ 입력에 대한 설명 (아래 입출력 예시 참조)
- 각 연산의 내용이 한 줄에 한 개씩 입력되고, 한 개의 줄에는 연산의 종류, 원소 순서로 입력된다.
- 연산의 종류: 연산 이름의 맨 앞 영문자가 대문자 A, D, P로 주어진다.
- 원소: 영문자(대문자, 소문자 모두 가능)
- 저장 순서 : 삽입 노드는 마지막 노드로 저장된다. 예를 들어 S, T, C 순으로 입력시 저장 순서는 S → T → C

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
typedef char element;
 
 
typedef struct ListNode{
    char data;
    struct ListNode* link;
} ListNode;
 
 
typedef struct{
    ListNode* head;
} linkedList_h;
 
 
linkedList_h* createLinkedList_h(void)
{
    linkedList_h* L;
    L = (linkedList_h*)malloc(sizeof(linkedList_h));
    L->head = NULL;
    return L;
}
 
//영문자를 삽입하는 함수
void addLastNode(linkedList_h* L, element x)
{
    listNode *newNode;
    listNode *p;
    newNode = (listNode*)malloc(sizeof(listNode));
    strcpy(newNode->data, x);
    newNode->link = NULL;
 
    if (L->head == NULL) {
        L->head = newNode;
        return;
    }
 
    p = L->head;
 
    while (p->link != NULL) {
        p = p->link;
    }
 
    p->link = newNode;
 
}
 
void printList(linkedList_h* L)
{
    ListNode* p;
    p= L->head;
 
    while(p != NULL){
        printf("%c", p->data);
        p = p->link;
    }
 
    printf("\n");
}
 
void removeNode(ListNode* prev, ListNode* p)
{
    if(p != NULL){
        prev->link = p->link;
        free(p);
    }
}
 
 
 
// 특정 영문자를 리스트에서 삭제
void searchRemove(linkedList_h* L, element x)
{
 
 
}
 
 
 
int main(){
    linkedList_h* L;
    L = createLinkedList_h();
 
    // 아래의 입.출력 연산을 수정한 후 프로그램 구현해야 함.
    addLastNode(L, 'S'); addLastNode(L, 't');
    addLastNode(L, 'a'); addLastNode(L, 'r');
    printList(L);
    searchRemove(L, 'a');
    printList(L);
    searchRemove(L, 's');
    printList(L);
}
 
 
 
 
 
 
 
 
 
 
 
 
 
cs
반응형

댓글