fitzyu😹 青岛理工的日子
花粉花粉
关注数: 16 粉丝数: 392 发帖数: 439 关注贴吧数: 28
为什么这段代码出现段错误 这段代码的64行,tail = tail->next; 调试到这句的时候会报段错误,有没有大神指导一下 #include <stdio.h> #include <stdlib.h> #include <string.h> #define NUM 4 //定义存储数据的基本单元——链表 struct chain { char name[20]; char city[20]; char sex[10]; char age[10]; char job[10]; struct chain *next; }; struct chain Datas[NUM] = { "Sun" ,"Weifang" ,"Male" ,"24","Student", "Tom" ,"Beijing" ,"Male" ,"31","doctor", "Marry" ,"Shanghai","Female","19","teacher", "Willing","Tingjin" ,"Female","21","worker" }; struct chain *create(); void print_data(struct chain *point); struct chain *SequelSeach(struct chain *head, char *name); int main() { struct chain *head; //定义表头 struct chain *p; char name[30]; head = create(); printf("Please input name:\n"); scanf("%s", name); p = SequelSeach(head, name); print_data(p); return 0; } struct chain *create() { struct chain *head, *tail, *p; int i; head = tail = NULL; printf("将名单数据输入到链表中 \n"); for(i = 0; i < NUM; i++) { p = (struct chain *)malloc(sizeof(struct chain)); strcpy(p->name, Datas[i].name); strcpy(p->city, Datas[i].city); strcpy(p->sex, Datas[i].sex); strcpy(p->age, Datas[i].age); strcpy(p->job, Datas[i].job); p->next = NULL; if(head == NULL) { head = tail = p; } else { tail = tail->next; tail->next = p; //tail = p; } } return head; } struct chain *SequelSeach(struct chain *head, char *name) { struct chain *temp; temp = head; for(temp = head; temp != NULL; ) { if(strcmp(temp->name, name) == 0) { break; } else { temp = temp->next; } } if(temp == NULL) { printf("没有查找到该人的资料\n"); } return temp; } void print_data(struct chain *point) { if(point == NULL); { return ; } printf("查找结果:"); printf(" 姓名:%s\n", point->name); printf(" 城市:%s\n", point->city); printf(" 性别:%s\n", point->sex); printf(" 年龄:%s\n", point->age); printf(" 工作:%s\n", point->job); }
1 下一页