###前提・実現したいこと
C言語で,線形リストに対して二分探索をするプログラムを作りたいです.
リストはcsvファイルから読み込んで作成します.
###発生している問題・エラーメッセージ
リストを作成(し表示して確認も)するところまでは出来たのですが,
二分探索で使う,リストの先頭・末尾・中央の値をどうやって関数に渡したらいいのかが分からず,リストを作成しただけで作業が止まってしまいました.
###該当のソースコード
C言語
1#include <stdio.h> 2#include <malloc.h> 3#include <string.h> 4 5#define DATA_FILE "test_search.csv" 6 7typedef struct _Node { 8 int data; 9 struct _Node *next; 10} Node; 11 12Node *make_node(void); 13int make_list(void); 14int disp_list(void); 15 16Node *head; 17Node *tail; 18Node *center; 19//リストの末尾と先頭,中央 20 21 22int main(void){ 23 24 make_list();//リスト作成 25 view_list();//リスト閲覧(確認用) 26 27 return 0; 28} 29 30 31//リスト作成 32int make_list(void) 33{ 34 Node *p; 35 FILE *fp; 36 char *data_file=DATA_FILE; 37 38 if((fp=fopen(data_file,"r"))==NULL){ 39 printf("%s can not be open\n",data_file); 40 return 1; 41 } 42 head=NULL; 43 while(p=make_node(),fscanf(fp,"%d",&p->data)!=EOF){ 44 p->next=head; 45 head=p; 46 } 47 48 return 0; 49} 50 51int view_list(void)//リスト表示(確認用) 52{ 53 Node *p; 54 55 p=head; 56 printf("\n"); 57 while(p!=NULL){ 58 printf("%d\n",p->data); 59 p=p->next; 60 61 62 } 63 64 return 0; 65} 66 67 68Node *make_node(void) 69{ 70 return (Node *)malloc(sizeof(Node)); 71}
さらに,csvファイルは昇順で並んでいるのですが,このプログラムだと表示するときに降順で表示されてしまいます.何故でしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/27 13:44