vidigummy KAU/2018년도 1학기 자료구조와 C++ 8

2018학년도 자료구조 실습시험(더블 연결 리스트(Double linked list))

시험을 쳤다.(저번 주) 문제 1.첫 줄에 데이터 입력 세트 T가 주어진다. 데이터 입력 세트 각 첫 줄에 정수 n이 주어지고, 두 번째 줄부터 정수 n개의 입력 데이터가 공백을 기준으로 주어진다.문제 2.소프트웨어학과에 다니는 예리와 아이린은 학교 축제에 레드벨벳이 어쩌고 저쩌고,,, pop_front : 줄 서 있는 사람 중 제일 앞 사람이 행사에 입장한다.pop_back : 줄 서 있는 사람 중 제일 뒤 사람이 줄에서 떠난다.push_front x: x한명이 제일 앞으로 들어온다push_back x: x 한명이 제일 뒤에 줄을 선다. 입력첫 줄에 데이터 입력세트 T가 주어진다. 데이터 입력 세트 각 첫줄에 맨 처음에 서 있는 사람 수 정수 n과 입력할 명령어 수 c가 공백 기준으로 주어진다. 두 번..

2018학년도 자료구조 실습시험 예제 문제(연결리스트(Chain list) && 원형 큐(round queue) && 트리(Tree || Binary Tree) && 스택(Stack) && 이중 연결 리스트(Double Linked LIst))

중간고사와 기말고사 사이에 실습고사를 진행했다. 그 이전에, 교수님께서는 우리에게 예제 문제를 주셨는데, 그걸 받은 덕분에 지금까지 배웠던 여러가지 자료구조를 구현할 수 있었다. /*연결 리스트*/#include #include using namespace std; class Node { friend class Chain; private: int data; Node *link; public: Node(int value = NULL, Node *next = NULL); }; class Chain { private: Node *first, *last,*cur; int HowMany; public: Chain(); void MakeChainNode(int value); void MakeChainFromLine..

6번 과제(Polynomial && Chain List)

in poly:poly() - O(1)void poly_append(float c, int e); O(1)void display_poly() - O(n)void poly_multiply - O(n^2)void add - O(n^2)void padd - O(n)void MakePolFromLine - O(n)void calculate - O(n)poly operator+ - add 사용poly operator* - poly_multiple 사용outside poly:operator :MakePolFromLine 사용 이것도 곱셈이 제대로 안되는 코드이다. 뭐 지금은 할 수 있겠지만 그 떄는 매우 어려웠던 것 같다. 다시 하고 싶지도 않고.

과제 5(Chain List 구현 && chainiterator 구현)

ChainNode::ChainNode(T value = 0, ChainNode *pos = NULL); - 체인 노드를 새로 만들어 주는 ChainNode 객체의 메써드로써, 일반 대입만 하기 때문에 O(1)을 차지한다.void Chain::MakeChainNodeFromList(); - 한 줄로 입력 받은 String을 띄어쓰기 기준으로 정수형 자료로 변환해 Chain을 구성하는 메써드, 입력 String의 길이가 n이라 했을 때 O(n)이다.void Chain::MakeChainNode(T value); - Chain::MakeChainNodeFromLis()에서 쓰이며, 파라미터 값을 해당 노드에 넣어준 다음 다음 노드를 만들어 준다. O(1).Chain::Chain(); - Type이 T인 체인 ..

4번 과제((Reverse polish (expression || notation)) && stack

1. '(' 를 만나면 스택에 푸시한다. 2. ')' 를 만나면 스택에서 '('가 나올 때까지 팝하여 출력하고 '(' 는 팝하여 버린다. 3. 연산자를 만나면 스택에서 그 연산자보다 낮은 우선순위의 연산자를 만날 때까지 팝하여 출력한 뒤에 자신을 푸시한다. 4. 피연산자는 그냥 출력한다. 5. 모든 입력이 끝나면 스택에 있는 연산자들을 모두 팝하여 출력한다. 후위 계산법 자체는 문제가 되지 않지만, 중위 계산식을 후위계산식으로 바꾸는 것에서 어려움을 많이 겪었다. 그래서 중위계산식을 후위계산식으로 변환시키기 위해 void Template::ITP 를 만들고 그에 따른 보조 함수로 IsOperator(연산자인지 아닌지 확인), precedence(연산자의 우선순위 확인)를 만들었다. 또한 계산을 위해 ca..

자료구조 3번 과제(연산자 overloading && Polynomial)

사용된 함수는 총 다섯 개로 void Polynomial::summ, void polynomial::mul,int Polynomial::GetHigh, void polynomial::PrintAll, void newPol이 있다.Polynomial::summ(polynomial *a, const Polynomial& b)- O(n) - 두 다항식을 더하는 함수. 클래스 b는 const로 설정하여 변경할 수 없도록 하였다.Polynomial::mul(Polynomial *a, Polynomial *b, Polynomial *temp) - O(n^2) - 두 다항식을 곱하는 함수, 클래스 temp는 결과값이 들어갈 빈 class로 설정한다.Polynomial::PrintAll(int x) - O(n) - 해..

2018.03.14의 자료구조 첫 과제

새 학기가 시작됐고, 매우 바쁘게 살고 있다. 학생회 부장을 맡게 되어 매우 귀찮게 되었고, 동아리 임원 까지 맡게 되었다. 군대 전에 마지막으로 불태우는 것 같기도 하다. 뭐 어쨌든 문제는 이거다. 이 문제는 file open을 사용한 입력법과 선택정렬, 문장부호 제거(텍스트 제외한 모든 것), 중복 제거 그리고 마지막으로 이진 탐색의 구현을 요구하고 있다. 그리하여 작성자가 구현한 함수는 strcmp_r(O(n^2)), test(O(n)), GetWord(O(n)), sort_r(선택정렬,O(n^2)), binSearch(logn) 이다.아래의 그림은 큰 범위의 함수와 사용된 함수들이다.1. strcmp_r(char *a, char *b) : a와 b를 비교(소문자로 변환하여)하여 a가 크면 1, b..