[Coding] 10828,10845 C++

문채영·2023년 3월 24일
0

💻연결리스트 기반 스택

#include<iostream>
#include<string>
using namespace std;

class Node {
public:
	int data;
	Node* next;

	Node(int X) {
		this->data = X;
		this->next = NULL;
	}
};

class Stack {
public:
	Node* top;
	int size;
	

	Stack() {
		top = NULL;
		size = 0;
		
	}

	void push(int e) {
		Node* v = new Node(e);
		if (size == 0) {
			top = v;
			size++;
		}
		else {
			v->next = top;
			top = v;
			size++;
		}
	}

	int pop() {
		if (size == 0) {
			return -1;
		}
		else {
			Node* temp = top;
			top = temp->next;
			size--;
			return temp->data;
			delete temp;
		}
	}

	int Size() {
		return size;
	}

	int empty() {
		if (size == 0) {
			return 1;
		}
		else {
			return 0;
		}
	}

	int Top() {
		if (size == 0) {
			return -1;
		}
		else {
			return top->data;
		}
	}
};

int main() {
	int N;
	cin >> N;
	
	Stack s;

	for (int i = 0; i < N; i++) {
		string menu;

		cin >> menu;

		if (menu == "push") {
			int a;
			cin >> a;
			
			s.push(a);
		}
		else if (menu == "pop") {
			cout << s.pop() << endl;
		}
		else if (menu == "size") {
			cout << s.Size() << endl;
		}
		else if (menu == "empty") {
			cout << s.empty() << endl;
		}
		else if (menu == "top") {
			cout << s.Top() << endl;
		}

	}
}

💻연결리스트 기반 큐

#include<iostream>
#include<string>
using namespace std;

class Node {
public:
	int data;
	Node* next;

	Node(int e) {
		this->data = e;
		this->next = NULL;
	}
};

class Queue {
public:
	int size;
	Node* f;
	Node* r;

	Queue() {
		f = r = NULL;
		size = 0;
	}

	bool empty() {
		return (size == 0);
	}

	void push(int X) {
		Node* v = new Node(X);
		if (empty()) {
			f = r = v;
		}
		else {
			r->next = v;
			r = v;
		}
		size++;
	}

	void pop() {
		if (empty()) {
			cout << "-1" << endl;
		}
		else {
			Node* temp = f;
			f = temp->next;
			size--;
			int x = temp->data;
			delete temp;
			cout << x << endl;
		}
	}
	int Size() {
		return size;
	}

	int front() {
		if (empty()) {
			return -1;
		}
		else {
			return f->data;
		}
	}
	
	int back() {
		if (empty()) {
			return -1;
		}
		else {
			return r->data;
		}
	}
};

int main() {
	int N;
	cin >> N;
	Queue q;

	for (int i = 0; i < N; i++) {
		string m;
		cin >> m;

		if (m == "push") {
			int a;
			cin >> a;
			q.push(a);
		}
		else if (m == "pop") {
			q.pop();
		}
		else if (m == "size") {
			cout << q.Size() << endl;
		}
		else if (m == "empty") {
			cout << q.empty() << endl;
		}
		else if (m == "front") {
			cout << q.front() << endl;
		}
		else if (m == "back") {
			cout << q.back() << endl;
		}
	}
}

0개의 댓글