반응형
아래는 모범 틀
#include <iostream>
using namespace std;
struct Node
{
char ch;
Node* next;
};
Node buf[100];
int bufCnt;
Node* head;
Node* myAlloc(int ch, Node* next)
{
buf[bufCnt].ch = ch;
buf[bufCnt].next = next;
return &buf[bufCnt++];
}
void addNode(char ch, Node *next)
{
head = myAlloc(ch, head);
}
int main()
{
return 0;
}
이건 내가 푼 것
#include <iostream>
using namespace std;
struct node {
char abc;
node* next;
};
node* head;
node* last;
node buf[10000000];
int bufcnt;
void addnode(char c) {
if (head == NULL) {
head = &buf[bufcnt++];
head->abc = c;
last = head;
}
else {
last->next = &buf[bufcnt++];
last = last->next;
last->abc = c;
//cout << last;
}
}
int main() {
addnode('A');
addnode('B');
addnode('C');
addnode('D');
addnode('E');
for (node* p = head;p != NULL;p = p->next) {
cout << p->abc << ' ';
}
return 0;
}
1. 메모리 풀
struct node 를 만들고
node에 대해 메모리를 넉넉하게 할당한다.
2. addnode
addnode 링크드리스트 연결하기
순서 중요하다.
head = NULL인 상태에서 &buf[bufcnt]로 주소 할당하고
bufcnt++로 bufcnt에 하나 더한다.
head에는 이제 node에 맞는 값을 집어넣을 수 있으니까 head->abc에 c를 넣는다.
마지막으로 last에다가 매번 더할거니까 last에도 head값을 복사한다.
그다음 이제 head에 NULL이 아닐 때
last에다가 값을 추가할 것임.
last에는 현재 값이 있는 상태이니
NULL값인 last-> next에다가 buf[bufcnt]를 할당한다.
bufcnt++로 bufcnt+=1을 하고
last = last->next로 가리키는 곳을 바꾼다.
last는 이제 방금 할당받은 buf[bufcnt]가 있으므로
last->abc로 값을 넣는다.
끝
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
이름을 해쉬함수 거쳐 바꿔보기 - honors method (0) | 2020.06.23 |
---|---|
해쉬함수 쓰기! 나이 입력하고 이름 출력 (0) | 2020.06.23 |
링크드리스트 int 넣기 myalloc함수 만들어서 넣기 (0) | 2020.06.23 |
링크드리스트 건너건너 출력하기 (0) | 2020.06.23 |
runtimeerror 나서 틀린 문제 고기 뒤집기 OXOOX (0) | 2020.06.04 |
음료 포인트 계산하기 쉬움. (0) | 2020.06.04 |
주변도 같이 사라지는 배열에서 재귀구현 노가다 (0) | 2020.05.29 |
trial and error! 연산자 순열 문제 (0) | 2020.05.29 |