반응형

리스트(list) 

- 하나의 연결 관계에 따라 자료들을 한 줄로 연결시킨 형태로 추상화된 자료구조이다.

- 자료 저장을 위해 메모리상의 연속된 공간을 할당해야 한다는 점에서 배열과 유사한 점이 있다.

- 자료들을 이동시킬 필요가 없이 연결관계만 재구성해 주면 되는 장점이 있다.

#include<stdio.h>
#include<list>
std::list<int>L;
void view(){
	std::list<int>::iterator p;
	for(p=L.begin(); p!=L.end(); p++)
		printf("%d", *p); //*p: 정수 리스트의 p위치에 있는 값
	printf("\n");  
}
int main()
{
	std::list<int>::iterator q;
	
	for(int i=1; i<=3; i++)
	 	L.push_back(i); // 마지막 원소 다음에 자료 i 삽입(연결)
	view();
	
	q = L.begin();
	q++;
	
	L.insert(q,4);
	view();
	
	L.push_back(5);
	view();
	
	q++;
	L.erase(q);
	view();
}
/*
123
1423
14235
1425

--------------------------------
Process exited after 0.02025 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

2. 스택(stack)

- 가장 나중에 입력된 자료에 가장 먼저 접근하고, 가장 먼저 저아도니 자료에는 가장 마지막에 접근하도록 설계된 후입선출(LIFO: Last In First Out) 형태로 추상화된 자료구조이다.

- 자료들을 쌓아 올리는 구조.

- 삽입삭제가 한곳에서만 이루어짐.

#include<stdio.h>
#include<stack>
std::stack<int>S;	// 정수형 스택 S 선언

int main(){
	for(int i=1; i<=3; i++)
	{
		S.push(i);		 //스택S의 가장 위에 i추가
	}
	for(int i=1; i<=2; i++)
	{
		printf("%d ", S.top());  //스택 S의 가장 위 자료값 출력 
		S.pop(); // 스택 S의 가장 위에 있는 자료 삭제
	}
	printf("\n"); 
	
	S.push(4); 
	S.push(5);
	while(!S.empty()){ // 스택S가 비어있지 않는 동안
		printf("%d ", S.top()); 
		S.pop(); // 
	}
	printf("\n");
}
/*
3 2
5 4 1

--------------------------------
Process exited after 0.02122 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

std::stack<int>S;

<stack>을 참조하여 스택을 선언하기 위해서 std::stack<스택에 저장될 자료형>스택이름; 을 사용

 

3. 큐(queue)

- 먼저 입력된 자료에 가장 먼저 접근하고, 가장 나중에 저장된 자료에는 가장 마지막에 접근하도록 선입 선출(FIFO: Fisrt In, First Out) 형태로 추상화된 자료구조이다. 

#include<stdio.h>
#include<queue>
std::queue<int>Q;

int main()
{
	for(int i=1; i<=3; i++)
	{
		Q.push(i);		
	}
	for(int i=1; i<=2; i++)
	{
		printf("%d ", Q.front()); //가장 처음값 출력
		Q.pop();
	}
	printf("\n");
	
	Q.push(4);
	Q.push(5);
	while(!Q.empty()){
		printf("%d ", Q.front());
		Q.pop();
	}
	printf("\n");
}
/*
1 2
3 4 5

--------------------------------
Process exited after 0.01674 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
*/

큐에 저장된어 있는 값을 확인하기 위해서는 큐에 저장된어 있는 값을 순서대로 꺼내면서 확인해 보아야 함.

반응형

'2019~2020 > 정보 과학' 카테고리의 다른 글

이미지 프로세싱  (0) 2019.09.06
재귀함수  (0) 2019.08.30
피보나치 수열 값 출력하기  (0) 2019.08.30
상항식, 하향식 재귀  (0) 2019.08.23
별찍기  (0) 2019.08.23

+ Recent posts