<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LinkedList%2FStackQueue%2F%EC%98%81%EB%8F%99</id>
	<title>LinkedList/StackQueue/영동 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=LinkedList%2FStackQueue%2F%EC%98%81%EB%8F%99"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LinkedList/StackQueue/%EC%98%81%EB%8F%99&amp;action=history"/>
	<updated>2026-05-14T22:34:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=LinkedList/StackQueue/%EC%98%81%EB%8F%99&amp;diff=34174&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=LinkedList/StackQueue/%EC%98%81%EB%8F%99&amp;diff=34174&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 작성자의 말 ==&lt;br /&gt;
* 1학년때 엄한 방법으로 짠 스택과 큐를 다시 제대로 링크드리스트를 이용해서 짜보자!&lt;br /&gt;
* 스택은 자료구조 숙제 겸사겸사 해서 완료. 큐는 조만간 다시 만들 예정.&lt;br /&gt;
== 스택 ==&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;string&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 struct Node&lt;br /&gt;
 {&lt;br /&gt;
 	string data;&lt;br /&gt;
 	Node * next;&lt;br /&gt;
 };&lt;br /&gt;
 void push(Node **top, string argData);&lt;br /&gt;
 string pop(Node **top);&lt;br /&gt;
 string peek(Node *top);&lt;br /&gt;
 void erase(Node **top);&lt;br /&gt;
 void display(Node *top);&lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	Node * top=NULL;&lt;br /&gt;
 	//Testing push&lt;br /&gt;
 	push(&amp;amp;amp;top, &amp;quot;임영동&amp;quot;);&lt;br /&gt;
 	push(&amp;amp;amp;top, &amp;quot;20021035&amp;quot;);&lt;br /&gt;
 	push(&amp;amp;amp;top, &amp;quot;컴퓨터공학과&amp;quot;);&lt;br /&gt;
 	display(top);&lt;br /&gt;
 	//Testing pop&lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Pop the top of the node: &amp;quot;&amp;amp;lt;&amp;amp;lt;pop(&amp;amp;amp;top)&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 	display(top);&lt;br /&gt;
 	//Testing peek;&lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Peek the top of the node: &amp;quot;&amp;amp;lt;&amp;amp;lt;peek(top)&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 	//Testing erase;&lt;br /&gt;
 	erase(&amp;amp;amp;top);&lt;br /&gt;
 	display(top);&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 void push(Node **top, string argData)&lt;br /&gt;
 {&lt;br /&gt;
 	Node * temp;&lt;br /&gt;
 	temp=new Node;&lt;br /&gt;
 	temp-&amp;amp;gt;data=argData;&lt;br /&gt;
 	temp-&amp;amp;gt;next=*top;//Indicate the highest node of stack&lt;br /&gt;
 	*top=temp;//Top links to the new element&lt;br /&gt;
 }&lt;br /&gt;
 string pop(Node **top)&lt;br /&gt;
 {&lt;br /&gt;
 	Node * temp;&lt;br /&gt;
 	string tempData;&lt;br /&gt;
 	temp=*top;&lt;br /&gt;
 	if(temp==NULL)&lt;br /&gt;
 	{//If your stack is empty&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Stack is empty now.&amp;quot;&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 		exit(1);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{//If your stack has one element at least&lt;br /&gt;
 		tempData=temp-&amp;amp;gt;data;&lt;br /&gt;
 		*top=temp-&amp;amp;gt;next;&lt;br /&gt;
 		delete temp;&lt;br /&gt;
 		return tempData;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 string peek(Node *top)&lt;br /&gt;
 {&lt;br /&gt;
 	string tempData;&lt;br /&gt;
 	if(top==NULL)&lt;br /&gt;
 	{//If your stack is empty&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Stack is empty now.&amp;quot;&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 		exit(1);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{//If your stack has one element at least&lt;br /&gt;
 		tempData=top-&amp;amp;gt;data;&lt;br /&gt;
 		return tempData;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 void erase(Node **top)&lt;br /&gt;
 {&lt;br /&gt;
 	Node *temp;&lt;br /&gt;
 	if(*top==NULL)&lt;br /&gt;
 	{//If your stack is empty&lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Stack is empty now.&amp;quot;&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 		exit(1);&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		temp=*top;&lt;br /&gt;
 		*top=(*top)-&amp;amp;gt;next;&lt;br /&gt;
 		delete temp;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 void display(Node *top)&lt;br /&gt;
 {&lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;----Stack----&amp;quot;&amp;amp;lt;&amp;amp;lt;endl;&lt;br /&gt;
 	Node * tempNode;		//Temporary node to tour linked list&lt;br /&gt;
 	tempNode=top;&lt;br /&gt;
 	do{&lt;br /&gt;
 		if(tempNode==NULL)&lt;br /&gt;
 		{&lt;br /&gt;
 			cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Sorry... There is no node to display.\n&amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			cout&amp;amp;lt;&amp;amp;lt;tempNode-&amp;amp;gt;data&amp;amp;lt;&amp;amp;lt;&amp;quot;\n&amp;quot;;&lt;br /&gt;
 			if(tempNode-&amp;amp;gt;next==NULL)//Exit from do-while loop if value of next node is null&lt;br /&gt;
 				break;&lt;br /&gt;
 			else				//Go to the next node if there is next node&lt;br /&gt;
 				tempNode=tempNode-&amp;amp;gt;next;&lt;br /&gt;
 		}&lt;br /&gt;
 	}while(1);	&lt;br /&gt;
 }&lt;br /&gt;
== 큐 ==&lt;br /&gt;
 #include&amp;amp;lt;iostream.h&amp;amp;gt; &lt;br /&gt;
 int num=0;//현재 사용중인 항목들의 수 &lt;br /&gt;
 int erase_num=0;//지운 항목 수를 세기 위한 수&lt;br /&gt;
 int i; &lt;br /&gt;
 class List{ &lt;br /&gt;
 private: &lt;br /&gt;
 	int data;//항목이 가진 값 &lt;br /&gt;
 	List * next;//다음 항목을 가리키는 포인터 &lt;br /&gt;
 public: &lt;br /&gt;
 	List(); &lt;br /&gt;
 	List(int); &lt;br /&gt;
 	~List(); &lt;br /&gt;
 	void add(int, List *); &lt;br /&gt;
 	void erase(List *); &lt;br /&gt;
 	void show(); &lt;br /&gt;
 	void last(List *);//link와 last 메서드는 맨 마지막 항목의 &lt;br /&gt;
 	void link(List *);//다음 항목을 가리키는 포인터를 NULL로 만들기 위한 함수&lt;br /&gt;
 }; &lt;br /&gt;
 List::List()&lt;br /&gt;
 { &lt;br /&gt;
 	data=0; &lt;br /&gt;
 	next=NULL; &lt;br /&gt;
 } &lt;br /&gt;
 List::List(int temp) &lt;br /&gt;
 { &lt;br /&gt;
 	data=temp; &lt;br /&gt;
 	next=NULL; &lt;br /&gt;
 } &lt;br /&gt;
 List::~List() &lt;br /&gt;
 { &lt;br /&gt;
 	delete next; &lt;br /&gt;
 } &lt;br /&gt;
 void List::add(int temp, List *n) &lt;br /&gt;
 {  &lt;br /&gt;
 	data=temp; &lt;br /&gt;
 	next=n; 	&lt;br /&gt;
 	num++; &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;num&amp;amp;lt;&amp;amp;lt;&amp;quot;번째 항목에 &amp;quot;&amp;amp;lt;&amp;amp;lt;data&amp;amp;lt;&amp;amp;lt;&amp;quot;를 추가합니다.n&amp;quot;; &lt;br /&gt;
 } &lt;br /&gt;
 void List::erase(List *n)      //f는 전, n은 다음 항목 &lt;br /&gt;
 {  &lt;br /&gt;
 	next=NULL; &lt;br /&gt;
 	erase_num++;&lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;data&amp;amp;lt;&amp;amp;lt;&amp;quot;를 지웠습니다.n&amp;quot;;&lt;br /&gt;
 } &lt;br /&gt;
 void List::show() &lt;br /&gt;
 { &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;list[&amp;quot;&amp;amp;lt;&amp;amp;lt;i&amp;amp;lt;&amp;amp;lt;&amp;quot;]: &amp;quot;&amp;amp;lt;&amp;amp;lt;&amp;quot; &amp;quot;; &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;주소값: &amp;quot;&amp;amp;lt;&amp;amp;lt;this&amp;amp;lt;&amp;amp;lt;&amp;quot;t&amp;quot;; &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;데이터 값: &amp;quot;&amp;amp;lt;&amp;amp;lt;data&amp;amp;lt;&amp;amp;lt;&amp;quot;t&amp;quot;; &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;다음 항목의 주소: &amp;quot;&amp;amp;lt;&amp;amp;lt;next&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 } &lt;br /&gt;
 void List::last(List *f)&lt;br /&gt;
 {&lt;br /&gt;
 	f-&amp;amp;gt;next=this;&lt;br /&gt;
 	next=NULL;&lt;br /&gt;
 }&lt;br /&gt;
 void List::link(List *n)&lt;br /&gt;
 {&lt;br /&gt;
 	next=n;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main() &lt;br /&gt;
 { &lt;br /&gt;
 	int input, sub_input1; &lt;br /&gt;
 	List * list=new List[10];       //우선 10개 동적 할당 &lt;br /&gt;
 	&lt;br /&gt;
 	do{ &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;==================LINKED LIST======================&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;1. 항목 추가&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;2. 항목 삭제&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;3. 항목 나열&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;4. 종료&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;===================================================&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 		cout&amp;amp;lt;&amp;amp;lt;&amp;quot;원하시는 메뉴를 선택해 주세요: &amp;quot;; &lt;br /&gt;
 		cin&amp;amp;gt;&amp;amp;gt;input; &lt;br /&gt;
 		switch(input){ &lt;br /&gt;
 		case 1: &lt;br /&gt;
 			if(num==10) &lt;br /&gt;
 				cout&amp;amp;lt;&amp;amp;lt;&amp;quot;더 이상 추가할 수 없습니다.n&amp;quot;; &lt;br /&gt;
 			else{ &lt;br /&gt;
 				cout&amp;amp;lt;&amp;amp;lt;&amp;quot;추가할 항목의 값은? &amp;quot;; &lt;br /&gt;
 				cin&amp;amp;gt;&amp;amp;gt;sub_input1; &lt;br /&gt;
 				list[num].add(sub_input1, &amp;amp;amp;list[num+1]); &lt;br /&gt;
 				list[num-1].last(&amp;amp;amp;list[num-2]);&lt;br /&gt;
 			for(i=erase_num;i&amp;amp;lt;num;i++)&lt;br /&gt;
 				list[num].link(&amp;amp;amp;list[num+1]);&lt;br /&gt;
 			}&lt;br /&gt;
 			break; &lt;br /&gt;
 		case 2: &lt;br /&gt;
 			if(num==0) &lt;br /&gt;
 				cout&amp;amp;lt;&amp;amp;lt;&amp;quot;더 이상 지울 수 없습니다.&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 			else{ &lt;br /&gt;
 				list[erase_num].erase(&amp;amp;amp;list[erase_num+1]); &lt;br /&gt;
 			} &lt;br /&gt;
 			break; &lt;br /&gt;
 		case 3: &lt;br /&gt;
 			&lt;br /&gt;
 			&lt;br /&gt;
 			for(i=erase_num;i&amp;amp;lt;num;i++) &lt;br /&gt;
 				list[i].show(); &lt;br /&gt;
 			break; &lt;br /&gt;
 		default: &lt;br /&gt;
 			break; &lt;br /&gt;
 		} &lt;br /&gt;
 	}while(input!=4); &lt;br /&gt;
 	cout&amp;amp;lt;&amp;amp;lt;&amp;quot;종료합니다.&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; &lt;br /&gt;
 	return 0; &lt;br /&gt;
 } &lt;br /&gt;
----&lt;br /&gt;
작성자: [[Yggdrasil]]&lt;br /&gt;
----&lt;br /&gt;
[[LinkedList/StackQueue]], [[LinkedList]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>