1 typedef struct Data{ 2 40 char *name; 3 41 char *IDCARD; 4 42 char *job_id; 5 43 char *length; 6 44 char *education; 7 45 char *marriage; 8 46 int local; 9 47 }Data; 10 48 11 49 typedef struct node{ 12 50 Data *data; 13 51 struct node *next; 14 52 struct node *prior; 15 53 }node; 16 54 17 55 typedef struct doublelist{ 18 56 node *head; 19 57 node *tail; 20 58 size_t size; 21 59 }doublelist; 22 60
1 void inserttail2(node *newnode) 2 126 { 3 127 if(list->size == 0){ 4 128 list->tail = newnode; 5 129 list->head = newnode; 6 130 } 7 131 else{ 8 132 newnode->prior = list->tail; 9 133 list->tail->next = newnode; 10 134 list->tail = newnode; 11 135 } 12 136 list->size++; 13 137 } 14 void SaveInformation() 15 380 { 16 381 node *temp = list->head; 17 382 FILE *file = fopen("staff_information.txt","w");//进行追加写 18 383 if(file == NULL){ 19 384 return; 20 385 } 21 386 else{ 22 387 while(temp != NULL){ 23 388 fprintf(file,"%s\t\t",temp->data->name); 24 389 fprintf(file,"%s\t\t",temp->data->IDCARD); 25 390 fprintf(file,"%s\t\t",temp->data->job_id); 26 391 fprintf(file,"%s\t\t",temp->data->length); 27 392 fprintf(file,"%s\t\t",temp->data->education); 28 393 fprintf(file,"%s\n\n",temp->data->marriage); 29 394 temp = temp->next; 30 395 } 31 396 fclose(file); 32 397 } 33 398 } 34 399 35 400 void ReadInformation() 36 401 { 37 402 node *temp = list->head; 38 403 FILE *file = fopen("staff_information.txt","r"); 39 404 if(file == NULL){ 40 405 return; 41 406 } 42 407 else{ 43 408 while(!feof(file)){ 44 409 node *newnode = creat_node();//此函数返回值就为一个新节点,这行代码大家可以不用在意 45 410 fscanf(file,"%s\t\t",newnode->data->name); 46 411 fscanf(file,"%s\t\t",newnode->data->IDCARD); 47 412 fscanf(file,"%s\t\t",newnode->data->job_id); 48 413 fscanf(file,"%s\t\t",newnode->data->length); 49 414 fscanf(file,"%s\t\t",newnode->data->education); 50 415 fscanf(file,"%s\t\t",newnode->data->marriage); 51 416 inserttail2(newnode);//t头插法插入节点 52 417 } 53 418 fclose(file); 54 419 } 55 420 return; 56 421 }
附上creat_node代码原型
1 node *creat_node(){ 2 12 node *newnode; 3 13 newnode = (node *)malloc(sizeof(node)); 4 14 newnode->data = (Data *)malloc(sizeof(Data)); 5 15 if(newnode->data != NULL){ 6 16 newnode->data->name = (char *)malloc(50 *sizeof(char)); 7 17 newnode->data->IDCARD= (char *)malloc(50 *sizeof(char)); 8 18 newnode->data->job_id = (char *)malloc(50 *sizeof(char)); 9 19 newnode->data->length = (char *)malloc(50 *sizeof(char)); 10 20 newnode->data->education = (char *)malloc(50 *sizeof(char)); 11 21 newnode->data->marriage = (char *)malloc(50 *sizeof(char)); 12 22 } 13 23 newnode->prior = NULL; 14 24 newnode->next = NULL; 15 25 return newnode; 16 26 }//创建一个新结点
大家照这个模板来就能解决大家的问题,顺式结构其实也几乎一样,希望能帮大家解决问题。