반응형

 


참고자료

 

2020/04/28 - [자료구조] - C언어 자료구조(심화 연결리스트 Linked_list 파일읽어서 정렬하기)

 

C언어 자료구조(심화 연결리스트 Linked_list 파일읽어서 정렬하기)

개요 이번에는 자료구조에서 가장 중요하다고 할 수 있는 Linked-list를 저번 포스팅에는 심도 있게 다루어 보지 못한 것 같아서 C언어의 파일 입출력 기능과 함께 사용하는 방법을 알아보도록 하

jung-story.tistory.com

 


개요

 

위의 파일에 이어서 이번에는 txt 파일에서 읽어온 데이터를 통해 연결 리스트를 만들었는데 이번에는

그 만들어 놓은 연결리스트에 데이터를 삽입하고 삽입하자마자 정렬되도록 하는 과정을 알아보도록

하겠습니다.

 


insert_node 함수

 

node* insert_node(node* head, char* name, int sno, float gpa, char* phone, char* province) {
	node* front, * new, * temp;

	new = malloc(sizeof(node));

	front = head;
	strcpy(new->name, name);
	new->sno = sno;
	new->gpa = gpa;
	strcpy(new->phone, phone);
	strcpy(new->province, province);

	temp = new;

	while (front != NULL) {
		if (strcmp(name, front->name) < 0)
			break;
		temp = front;
		front = front->link;
	}
	if (temp == new) {
		new->link = front;
		front = new;
	}
	else {
		new->link = temp->link;
		temp->link = new;
		front = head;
	}

	return front;
}

 


main 함수

 

while (1) {
		system("cls");

		i = 0;
		curnode = head; //Reading file is finished.

		while (curnode)
		{
			printf("%s  %d  %.1f  %s  %s\n", curnode->name, curnode->sno, curnode->gpa, curnode->phone, curnode->province);
			curnode = curnode->link;
		} //Do it while curnode is not NULL
		printf("Type command> ");

		gets(input); //get string from user's keyboard

		//cut string by each 'space' and save as separated data
		token = strtok(input, " ");
		do {
			strcpy(data[i], token);
			i++;
		} while (token = strtok(NULL, " "));

		//execute each command and change data type of each data
		if (!strcmp(data[0], "IS")) {
			strcpy(in_name[0], data[1]);
			in_sno = atoi(data[2]);
			in_gpa = atof(data[3]);
			strcpy(in_phone, data[4]);
			strcpy(in_province, data[5]);
			head = insert_node(head, in_name[0], in_sno, in_gpa, in_phone, in_province);
		}

 


다음번에는 여러가지 조건으로 검색하는 과정을 알아보도록 하겠습니다.

 


 

반응형

+ Recent posts