#include <iostream>
class lnode{
public:
char *data;
lnode *next;
lnode() : data(nullptr), next(nullptr) {}
lnode(const char *str) : data(nullptr), next(nullptr) {
data = new char[strlen(str) + 1];
strcpy(data, str);
}
~lnode() {
delete data;
}
};
class Quene {
private:
int siz;
lnode *head;
lnode *tail;
public:
Quene() : siz(0), head(nullptr), tail(nullptr) {}
auto enq(const char *str) {
if (head == nullptr) {
tail = head = new lnode(str);
return siz = 1;
}
lnode *newt = new lnode(str);
tail->next = newt;
tail = newt;
return ++siz;
}
auto deq() {
if (head == nullptr)
return -1;
lnode *newh = head->next;
delete head;
head = newh;
if (siz == 1)
tail = nullptr;
return --siz;
}
auto const size() {
return siz;
}
void const prtq() {
lnode *p;
for (p = head; p != nullptr; p = p->next)
std::cout << p->data << ' ';
std::cout << '\n';
}
~Quene() {
lnode *p, *next;
for (p = head; p != nullptr; p = next) {
next = p->next;
delete p;
}
}
};
int main() {
Quene myqq;
myqq.enq("abc");
myqq.enq("def");
myqq.enq("123");
myqq.enq("456");
myqq.deq();
myqq.prtq();
}
깃쁑이... 클래스... 만들줄안다... 헤헤헤...
이제 cpp core guideline 읽으러 가자
어어 아직이다
잘 몰라서 그러는데 delete data; 로 지워도 되는거임? delete[] 없이??
모야그게??
잘 알고 있네
delete[]가 맞음 - dc App
왜 이름이 Quene야
- auto 왠만하면 쓰지말기
delete 쓰지말고 스마트 포인터 쓰기
strcpy같은 C 문법 대신에 std쓰기 -> 여기서는 std::vector
포인터 대신에 reference 자주쓱
수마트...포인터.. 그게모야?
https://youtu.be/PJ-byW33-Hs
size도 아니고 sz도 아미고 siz라니 심기가 불편해지는구려 - dc App
const 멤버함수는 함수명 오른쪽에 붙여야됨