資料結構C語言實現----順序查詢
阿新 • • 發佈:2020-07-28
建立上圖的一個txt檔案:
1004 TOM 100
1002 lily 95
1001 ann 93
1003 lucy 98
用一個c程式讀入這個表一個結構體陣列中:
結構體如下:
//學生資料結構體 typedef struct student { int id; //學號 char name[10]; //姓名 int score; //成績 } Student;
以學號為關鍵字,查詢學生成績
執行示例:
程式碼如下:
/********************************* * 順序查詢 * 從檔案讀取一組資料 * 存入到結構體中 * 對比key查詢 * *******************************/ #include<stdio.h> #include<stdlib.h> //學生資料結構體 typedef struct student { int id; //學號 char name[10]; //姓名 int score; //成績 } Student; //函式宣告 int sq_search(Student r[] , int n , int key);//順序查詢 int main(int argc , char *argv[]) { Student r[4]; FILE *fp; //判斷命令列是否正確輸入 if (argc!=2) { printf("命令列輸入錯誤!"); return 0; } //判斷檔案是否成功開啟 if ((fp = fopen(argv[1] , "r")) == NULL) { printf("檔案開啟失敗!"); return 0; } //從檔案中讀取資料資訊 for (size_t i = 0; i < 4; i++) { fscanf(fp , "%d %s %d",&(r[i].id),&(r[i].name),&(r[i].score)); } //順序查詢 int key,i; while (1) { printf("請輸入要查詢的學生的學號:"); scanf("%d",&key); i = sq_search(r,4,key); if (i!=-1) { printf("學號:%d\n姓名:%s\n成績:%d\n",r[i].id,r[i].name,r[i].score); }else { printf("列表中沒有該學生的資訊!"); } } return 0; } //順序查詢 int sq_search(Student r[] , int count , int key) { for (size_t i = 0; i < count; i++) { if (r[i].id==key) { return i; } } return -1; }