*재*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 2
검색어 입력폼
  • [데이터구조 트리] 데이터구조론 트리
    함수의 기능과 리턴값함수인자리턴값기능tree_pointer insert_node(tree_pointer node, information info);tree_node구조체의 tree_pointer의 node와 tree_node구조체 info를 넘겨 받는다.*tree poiner형으로tree_node를 가리치는 포인형을 리턴한다.트리를 삽입하는 기능을가지고 있는 함수이다.void delete_node(tree_pointer node, int num);tree_pointer node이라는 트리의 위치를 넘겨받는 포인터를 넘겨받고 삭제하는 값을 num으로 넘겨 받는다.void로 리턴값이 없다.트리를 삭제하는 기능을 가진 함수이다.void printscreen(tree_pointer root2, int num);tree_pointer root2는 정렬된 트리를 인자로 넘겨 받는다void로 리턴값이 없다.화면에 출력해주는 기능을가진 함수이다void main()void로 아무것도 넘겨 받지 않는다void로 리턴값이 없다.트리를 입력받고 삭제, 출력, 저장, 검색을 가진 메인 함수이다.tree_pointer modified_serch(tree_pointer tree, int key);tree_pointer node이라는 트리의 위치를 넘겨받는 포인터를 넘겨받고 삭제하는 값을 num으로 넘겨 받는다.*tree poiner형으로tree_node를 가리치는 포인형을 리턴한다.입력된 트리를 검색하는 함수로써 id값으로 찾아 출력 해준다.tree_pointer parent_serch(tree_pointer tree, int key);tree_pointer tree는 이미 작성된 트리를 넘겨 받는다.*tree poiner형으로tree_node를 가리치는 포인형을 리턴한다.부모트리를 찾는 함수로 삽입이나 삭제를 할 때 필요하다.tree_pointer max_left_serch(tree_pointer tree);tree_pointer tree는 이미 작성된 트리를 넘겨 받는다.*tree t->id;max_left->id = change_key;strcpy(swap,temp->name);//이름 바꿈.strcpy(max_left->name,swap);strcpy(temp->name,max_left->name);strcpy(swap,temp->work);//직업strcpy(max_left->work,swap);strcpy(temp->work,max_left->work);strcpy(swap,temp->service_place);//부서strcpy(max_left->service_place,swap);strcpy(temp->service_place,max_left->service_place);//parent_temp = temp;delete_node(max_left,max_left->id); //왼쪽 자식의 재귀함수.}else if(temp->right_child) {root = temp->right_child;temp=NULL;}}부모 노드가 없을 때 함수로 코딩하는 부분에서 생각을 먼저 하고 코딩을 했어야 했는데 그냥 맞춰서 하다 보니, 시간도 오래 걸렸고 나중엔 안 되는 경우가 생겨 애를 많이 먹었다. 나중에 곰곰이 생각한 후 코딩을 해보니 완벽하게 삭제가 된다. root노드를 삭제하는 경우와 마찬가지 인데 자식이 둘다 없을땐 root가 NULL을 가리치고, 왼쪽 자식만 있을 때는 왼쪽자식의 오른쪽 자식을 찾고 있으면 root와 바꾸고 삭제 한다. 만약 둘다 없으면 그 왼쪽 자식과 바꾸고 또 왼쪽 자식이 있으면 그 자식과 다시 바꾼 후 자식이 둘다 없을때 삭제 한다. 또한 오른쪽 자식만 있을 경우에는 root가 오른쪽 자식을 가리킨다. 이 함수의 알고리즘이다.#include #include #include #include #define MAX_STACK_SIZE 50typedef struct tree_node *tree_pointer;typedef struct tree_node {int id;char name[20];char work[15];;printf("t┃ A. 트리 삽입 ┃n");printf("t┃ D. 트리 삭제 ┃n");printf("t┃ P. 트리 화면출력 ┃n");printf("t┃ W. 트리 검색 ┃n");printf("t┃ S. 트리 파일저장 ┃n");printf("t┃ Q. 프로그램 종료 ┃n");printf("t┃ ┃n");printf("t┗━━━━━━━━━━━━━┛n");printf("nt실행하실 작업의 항목을 입력: ");return getche();}void insert(){information info;while(1) {printf("nntI D : ");scanf("%d",&info.id); // 숫자만 입력되게.if(info.id == -1) break;printf("t이 름 : ");scanf("%s",info.name);printf("t직 업 : ");scanf("%s",info.work);printf("t근무처 : ");scanf("%s",info.service_place);result=insert_node(root,info);if(root == NULL) root = result; //root가 NULL일때만 root를 잡음.}}void delmenu(){information info2;printf("nnt삭제하실 ID를 입력하세요n");printf("ntI D : ");scanf("%d",&info2.id);delete_node(root,info2.id);}int search_menu(){information info1;printf("nnt검색하실 ID를 입력하세요n");printf("ntI D : ");scanf("%d",&info1.id);return info1.id;}void store_menu(){char input;printf("nn");printf("t┏━Sub Menu━━━━━━━━┓n");printf("t┃ ┃n");printf("t┃ 1. 중위순회저장 ┃n");p_pointer node){ // 전위순위로파일에 저장.fp1 = fopen("C:\data_pre.txt","w");printf("ntdata_in.txt 파일로 저장했습니다!n");preorder(node);fclose(fp1);}void store_PO(tree_pointer node){ // 후위순위파일에 저장.fp2 = fopen("C:\data_post.txt","w");printf("ntdata_post.txt 파일로 저장했습니다!n");postorder(node);fclose(fp2);}tree_pointer search(tree_pointer tree,int key){ // 검색 함수.while(tree){if(tree->id==key) return tree;if(tree->id>key) tree=tree->left_child;else tree=tree->right_child;}return NULL;}void inorder(tree_pointer node){ // 중위 트리 순회if(node){inorder(node->left_child);fprintf(fp,"%d ",node->id);inorder(node->right_child);}}void preorder(tree_pointer node){ // 전위 트리 순회if(node){fprintf(fp1,"%d ",node->id);preorder(node->left_child);preorder(node->right_child);}}void postorder(tree_pointer node){ //후위 트리 순회if(node){postorder(node->left_child);postorder(node->right_child);fprintf(fp2,"%d ",node->id);}}tree_pointer max_left_serch(tree_pointer tree){while(tree) {if(tree->right_child == NULL)return tree;else {parent_rent_temp->right_child = NULL; // 자식트리가 둘다 없을때.찾은 오른쪽 자식을 NULL로 초기화}else if((temp->left_child != NULL) && (temp->right_child == NULL) || (temp->left_child == NULL) && (temp->right_child != NULL)) {//왼쪽 자식이나 오른쪽 자식이 있을때.if((temp->left_child != NULL) && (temp->right_child == NULL)) what=0; //왼쪽자식이 있을때.if((temp->left_child == NULL) && (temp->right_child != NULL)) what=1; //오른쪽자식이 있을때.if(temp->left_child) {left_temp_max= temp;max_left=max_left_serch(temp->left_child); //왼쪽 자식 찾기.}else {while(temp->right_child && (!temp->left_child)) { //여기 이상함! 5-20-15-23max_left=max_right_serch(temp->right_child); // 왼쪽 자식 없으면 오른쪽자식만 있을때.change_key = temp->id;//값을 교환temp->id = max_left->id;max_left->id = change_key;parent_temp = temp;temp = temp->right_child;}}if(temp->left_child){ //여기부분도 문제.if(num!=temp->left_child->id ){ //30-20일때 여기서 문제였음.10-52-50-45-70change_key = temp->id;//값을 교환temp->id = max_left->id;max_left->id = change_key;}if(temp->left_child->left_child) { //10-52-50-45-70때문if(temp->left_chil.
    공학/기술| 2003.10.10| 17페이지| 1,000원| 조회(405)
    미리보기
  • [데이터구조 리스트] c로 짠 리스트
    함수의 기능과 리턴값함수인자리턴값기능list_pointer add(list_node info)list_node구조체의 info라는 구조체를 넘겨 받는다.*list poiner형으로list_node를 가리치는 포인형을 리턴한다.리스트를 삽입하는 기능을가지고 있는 함수이다.void sort(list_pointer ptr, list_pointer temp)list_pointer ptr이라는 리스트의 위치를 넘겨받는 포인터를 넘겨받고 list_pointer temp는 새로 입력을 받는 리스트를 넘겨받는다.void로 리턴값이 없다.리스트를 순차적으로 정렬하는 기능을 가진 함수이다.void print(list_pointer result)list_pointer result는 정렬된 리스트를 인자로 넘겨 받는다void로 리턴값이 없다.파일에 출력해주는 기능을가진 함수이다void main()void로 아무것도 넘겨 받지 않는다void로 리턴값이 없다.리스트를 입력받고 정렬하는기능을 가진 메인 함수이다.void read(FILE *ifp, information *value)FILE *ifp는 파일 포인터로 파일의 위치를 인자로 받고 information *value 파일에서 입력되 있던 리스트정보를 인자로 넘겨 받는다.void로 리턴값이 없다.파일에서 읽는 함수로써 이미 작성되 있는 파일에서 정보를 가지고 와서 리스트를 만든다.void screensave(list_pointer result)list_pointer result는 정렬된 리스트를 인자로 넘겨 받는다void로 리턴값이 없다.화면에 출력되는 형식으로 파일에 저장시킨다.char screen()void로 아무것도 넘겨 받지 않는다char형으로 입력받은 영문자 한글자를 리턴해 줘 메인에서 사용한다.프로그램을 실행했을 때 작업하고자 하는 메뉴를 보여주고 입력받는 함수이다.void printscreen(list_pointer result)list_pointer result는 정렬된 리스트를 인자로 넘겨 받는다void로 리턴값이 > 0 ) pre_ptr = ptr;ptr = ptr->link;}} //whileif(strcmp(ptr->name, temp->name) > 0 ) {temp->link = ptr;pre_ptr->link = temp;}if(ptr->link == NULL && strcmp(ptr->name,temp->name) link = temp;//여기틀렸다}//if문else if(strcmp(ptr->name, temp->name) > 0) {temp->link = ptr;head = temp;}//else ifptr = head;}//else리스트를 정렬해 주는 함수로써 리스트가 없었을 때 와 head node가 삽입되는 노드보다 작을 때 head보다 클 때이름으로 정렬해주는 부분이 중요하다. pre라는 전 노드와 temp노드의 우선순위를 따져 삽입한다.void read(FILE *ifp, information *value){information readvalue;fscanf(ifp, "%8d %12s %11s %12s", &readvalue.id, &readvalue.name, &readvalue.work, &readvalue.service_place);value->id = readvalue.id;strcpy(value->name, readvalue.name);strcpy(value->work, readvalue.work);strcpy(value->service_place, readvalue.service_place);}리스트를 만들기 위해 파일에서 읽어 값을 information형 포인터 value에 저장시킨 후 그 정보를 리스트로 만든다.void print(list_pointer result){ofp = fopen("C:\data.txt","w"); //두번 저장되는 것을 막기 위해서.while(result != NULL) {fprintf(ofp," %8d",result->id);fprintf(ofp,"%12s",result->name);fprintf(od->link != NULL) pre_ptr->link = ptr->link;else head = NULL;free(delptr);}else {if(head->id == delptr->id) {delptr=head;head = head->link;free(delptr);}else {delptr=ptr;pre_ptr->link = ptr->link;free(delptr);}}}}}삽입함수와 마찬가지로 삭제하는 방법 아무 것도 없을 때 와 head노드가 한 개 있을 때 head노드를 삭제 할 때그리고 맨 뒤에 노드를 삭제, 중간 노드 삭제에 대한 부분을 구현하였다.#include #include #include #include #include typedef struct list_node *list_pointer;typedef struct list_node {int id;char name[20];char work[15];char service_place[15];list_pointer link;}information;list_pointer head = NULL;list_pointer result = NULL;list_pointer add(list_node info);void sort(list_pointer ptr, list_pointer temp); //정렬함수list_pointer del(list_node info); //삭제함수void delmenu(); //삭제 메뉴void print(list_pointer result); //파일출력void screensave(list_pointer result); //화면을 파일에 쓰기char screen(); // 메뉴void printscreen(list_pointer result); //화면출력void insert(); // 입력화면void read(FILE *ifp, information *value); //파일에서 읽기FILE *ifp,*ofp,*fp;void main(){char input;information vpy(temp->name,info.name);strcpy(temp->work,info.work);strcpy(temp->service_place,info.service_place);temp->link = NULL;if(head == NULL) {head = temp;ptr = head;}else sort(ptr,temp);return head;}void sort(list_pointer ptr,list_pointer temp){list_pointer pre_ptr = NULL;ptr = head;if(head == NULL) {head = temp;ptr = head;}else {if(strcmp(ptr->name,temp->name) < 0 ) {while(ptr->link != NULL && strcmp(ptr->name, temp->name) < 0) {if(ptr->link != NULL) {if(strcmp(ptr->link->name, temp->name) > 0 ) pre_ptr = ptr;ptr = ptr->link;}} //whileif(strcmp(ptr->name, temp->name) > 0 ) {temp->link = ptr;pre_ptr->link = temp;}if(ptr->link == NULL && strcmp(ptr->name,temp->name) link = temp;//여기틀렸다}//if문else if(strcmp(ptr->name, temp->name) > 0) {temp->link = ptr;head = temp;}//else ifptr = head;}//else}//sort함수void print(list_pointer result){ofp = fopen("C:\data.txt","w");while(result != NULL) {fprintf(ofp," %8d",result->id);fprintf(ofp,"%12s",result->name);fprintf(ofp,"%11s",result->work);fprintf(ofp,ace);printf("┗━━━━━━━━━━━━━━┛n");result = result->link;i++;}printf("-----------------출력이 끝났습니다-----------------nn");}void screensave(list_pointer result){int i=1;fprintf(fp," *리스트의 정렬된 정보*n");while(result != NULL) {fprintf(fp,"┏━━━━━━━━━━━━━━┓n");fprintf(fp,"┃%d번째 인원의 정보입니다.♠ ┃n",i);fprintf(fp,"┣━━━━━━━━━━━━━━┫n");fprintf(fp,"┃I D: %-15d ┃n",result->id);fprintf(fp,"┃이 름: %-15s ┃n",result->name);fprintf(fp,"┃직 업: %-15s ┃n",result->work);fprintf(fp,"┃근무처: %-15s ┃n",result->service_place);fprintf(fp,"┗━━━━━━━━━━━━━━┛n");result = result->link;i++;}}void insert(){information info;while(1) {printf("nI D : ");scanf("%d",&info.id);if(info.id == -1) break;printf("이 름 : ");scanf("%s",info.name);printf("직 업 : ");scanf("%s",info.work);printf("근무처 : ");scanf("%s",info.service_place);result=add(info);}}char screen(){printf("입력하실 작업을 입력 하세요.n");printf("----------------------------n");printf("A. 리스트 삽입n");printf("D. 리스트 삭제n");printf("P. 리스트 화면출력n");printf("S. 리스트 파일저장n");printf("Q. e));
    공학/기술| 2003.10.10| 12페이지| 1,000원| 조회(295)
    미리보기
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 27일 수요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
11:43 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감