求前辈指导一下结构体+指针是什么意思
我找了个电话薄应用的程序,有些地方看不懂结构体是#defineIDstructidstructid{charname[20];chartele[20];ID*next;《...
我找了个电话薄应用的程序,有些地方看不懂
结构体是
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next; 《《==这里不太懂,是什么意思
};
还有底下是这个他的一个键入函数
这里有些不懂
ID *creat()
{
ID *p1,*p2,*head; 《==这里是什么意思?只是单独定义3个指针吗?ID写在最前边是做什么?
char str[20];
p1=p2=head=NULL;
ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();
if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
} 展开
结构体是
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next; 《《==这里不太懂,是什么意思
};
还有底下是这个他的一个键入函数
这里有些不懂
ID *creat()
{
ID *p1,*p2,*head; 《==这里是什么意思?只是单独定义3个指针吗?ID写在最前边是做什么?
char str[20];
p1=p2=head=NULL;
ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();
if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
} 展开
2个回答
展开全部
第一个《==:是链表的指针与下一个指针连接的指针。如:p->next =p1,即p和p1 指针就连接起来了;
第二个《==:是定义的三个指针,其中head是头指针,下面很多函数调用链表时只需要传递头指针 就可以了。p1 和p2 一个是两个建立链表用的指针,一个新建用于存值,另一个负责连接传递;ID 是由于 #define ID struct id 将 struct id 这个结构体与一个新的名字ID 代替。所以ID 在这里 就是定义三个struct id 结构类型的指针。
第二个《==:是定义的三个指针,其中head是头指针,下面很多函数调用链表时只需要传递头指针 就可以了。p1 和p2 一个是两个建立链表用的指针,一个新建用于存值,另一个负责连接传递;ID 是由于 #define ID struct id 将 struct id 这个结构体与一个新的名字ID 代替。所以ID 在这里 就是定义三个struct id 结构类型的指针。
更多追问追答
追问
首先感谢一下,能在帮忙读下这个键入函数吗?见问题补充
追答
这是个建立链表的函数:
ID *creat()
{
ID *p1,*p2,*head; //首先定义三个指针
char str[20];
p1=p2=head=NULL; // 令其初始化为空
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break; //当你输入的姓名为#时结束循环 跳出while循环,
p1=(ID*)malloc(sizeof(ID)); //为p1分配内存
strcpy(p1->name,str); //将你输入的名字赋值到结构体指针里;
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();
if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}
不知道你哪不懂,就说这些吧。。。
2012-05-28
展开全部
ID就是struct id ,是一个结构体的数据类型,和int类似,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询