level 11
fitzyu😹
楼主
这段代码的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);
}
2016年11月18日 02点11分
1
#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);
}