메인 문에서 연결형 리스트를 미리 생성해 놓고 검색하고자 하는 문자열을 입력받아 탐색알고리즘을 통해 탐색 한 뒤 결과를 출력 하는 프로그램
[출처] (C언어) 연결형 리스트 탐색 알고리즘 구현|작성자 길가다주은노트북
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include<stdio.h> #include<string.h> //리스트 구조체 선언 struct List { char strData[11]; struct List *nextList; }; //탐색 알고리즘 함수 선언 struct List* searchNode(struct List *list, char *x); void main() { //연결형 리스트 생성 struct List appleList = { "apple",NULL }; struct List BananaList = { "Banana", &appleList }; struct List melonList = { "Melon", &BananaList }; struct List piList = { "Rassbary", &melonList }; struct List nameList = { "신홍기", &piList }; struct List *search; //검색할 이름을 저장할 변수 선언과 값 받기 char strTemp[11]; printf_s("검색할 것을 입력하세요 : "); scanf("%s", strTemp); //search에 searchNode함수를 실행한 결과를 저장 search = searchNode(&nameList, strTemp); //탐색알고리즘을 통해 찾은경우와 못찾은 경우를 출력 if (search != NULL) { printf_s("%s를 리스트에서 찾았습니다.\n", strTemp); } else { printf_s("%s를 리스트에서 찾지 못했습니다.\n", strTemp); } return; } //리스트 L에서 x 노드 탐색 알고리즘 struct List* searchNode(struct List *list, char *x) { //시작주소를 temp에 저장; struct List *temp = list; //마지막 노드일 때 까지 반복문 돌리는 것 while (temp != NULL) { //temp의 현재 노드에 저장된 strData와 검색하려는 x노드가 같은지 비교 if (!strcmp(temp->strData, x)) { //맞을경우 temp반환 return temp; } //다음 노드로 이동 temp = temp -> nextList; } //찾지 못하여 NULL값 반환 return temp; } | cs |
'프로그래밍 > C' 카테고리의 다른 글
(C언어) 후위표기 수식의 연산 프로그램 (0) | 2016.07.09 |
---|---|
(C언어) 이중 연결 리스트의 원소 삭제 알고리즘 (0) | 2016.07.09 |
(C언어) 원형 연결 리스트의 첫 번째 노드 삽입 알고리즘 (0) | 2016.07.09 |
(C언어) 함수, 배열, 포인터, 구조체 (0) | 2016.07.09 |
(C언어) 배열 연습 문제 (0) | 2016.07.09 |