关于c语言链表的一个问题h->next=p1,p2->next=p1是什么意思,又有什么作用
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/17 06:22:29
关于c语言链表的一个问题h->next=p1,p2->next=p1是什么意思,又有什么作用
struct stu { int num; float score; struct stu *next; } *h,*p1,*p2; p1=(struct stu *)malloc(sizeof(struct stu)); h=p1; p1=(struct stu *)malloc(sizeof(struct stu)); h.next=p1; p2=p1; p1=(struct stu *)malloc(sizeof(struct stu)); p2.next=p1; p2=p1;
如果我在h=p1处加上p2=p1那么h.next=p1是否可以不要,而改为p2.next=p1呢
struct stu { int num; float score; struct stu *next; } *h,*p1,*p2; p1=(struct stu *)malloc(sizeof(struct stu)); h=p1; p1=(struct stu *)malloc(sizeof(struct stu)); h.next=p1; p2=p1; p1=(struct stu *)malloc(sizeof(struct stu)); p2.next=p1; p2=p1;
如果我在h=p1处加上p2=p1那么h.next=p1是否可以不要,而改为p2.next=p1呢
![关于c语言链表的一个问题h->next=p1,p2->next=p1是什么意思,又有什么作用](/uploads/image/z/1122300-36-0.jpg?t=%E5%85%B3%E4%BA%8Ec%E8%AF%AD%E8%A8%80%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98h-%3Enext%3Dp1%2Cp2-%3Enext%3Dp1%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%2C%E5%8F%88%E6%9C%89%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8)
struct stu //定义结点结构体,单链表
\x09{
\x09\x09int num;
\x09\x09float score;
\x09\x09struct stu *next;
\x09} *h,*p1,*p2;
\x09\x09/*malloc动态分配一个节点空间A,返回该空间的指针给p1 */
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*p1赋给h(通常意味头指针),可以理解为使用h表示空间A*/
\x09h=p1;
\x09\x09/*malloc动态分配一个节点空间B,返回该空间的指针给p1*/
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*h节点的next成员指向空间B,就把A-B链起来了,可以理解为使用p1表示空间B*/
\x09h.next=p1;
\x09\x09/*p1赋给p2,此时用p2表示空间B了*/
\x09p2=p1;
\x09\x09/*malloc动态分配一个节点空间C,返回该空间的指针给p1*/
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*p2(空间B)的next指向空间p1,把B-C链起来*/
\x09p2.next=p1;
\x09\x09/*又用p2表示空间C,此时链表的结构是A-B-C了.*/
\x09p2=p1;
\x09\x09/*综上所述,这个程序建立了一个链表,h指向头结点,p2指向尾结点,每次新增结点时,都把新分配的结点空间赋给p1,再把p1链到p2上去*/
再问: 如果我在h=p1处加上p2=p1那么h.next=p1是否可以不要,而改为p2.next=p1呢
再答: 是可以的,这里要清楚,指针只是用来存一个地址的,h=p1和p2=p1都是把新建的空间的地址进行赋值,但实际上,空间还是一个空间,就像你家只有一间房,只有一个门牌号,你把这个门牌号抄给多少人,都不会使你家的房子变多的,只不过这些人都能找到你家而已。所以当h和p2都指向同一个地址的时候,这两个做的是同一个操作
\x09{
\x09\x09int num;
\x09\x09float score;
\x09\x09struct stu *next;
\x09} *h,*p1,*p2;
\x09\x09/*malloc动态分配一个节点空间A,返回该空间的指针给p1 */
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*p1赋给h(通常意味头指针),可以理解为使用h表示空间A*/
\x09h=p1;
\x09\x09/*malloc动态分配一个节点空间B,返回该空间的指针给p1*/
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*h节点的next成员指向空间B,就把A-B链起来了,可以理解为使用p1表示空间B*/
\x09h.next=p1;
\x09\x09/*p1赋给p2,此时用p2表示空间B了*/
\x09p2=p1;
\x09\x09/*malloc动态分配一个节点空间C,返回该空间的指针给p1*/
\x09p1=(struct stu *)malloc(sizeof(struct stu));
\x09\x09/*p2(空间B)的next指向空间p1,把B-C链起来*/
\x09p2.next=p1;
\x09\x09/*又用p2表示空间C,此时链表的结构是A-B-C了.*/
\x09p2=p1;
\x09\x09/*综上所述,这个程序建立了一个链表,h指向头结点,p2指向尾结点,每次新增结点时,都把新分配的结点空间赋给p1,再把p1链到p2上去*/
再问: 如果我在h=p1处加上p2=p1那么h.next=p1是否可以不要,而改为p2.next=p1呢
再答: 是可以的,这里要清楚,指针只是用来存一个地址的,h=p1和p2=p1都是把新建的空间的地址进行赋值,但实际上,空间还是一个空间,就像你家只有一间房,只有一个门牌号,你把这个门牌号抄给多少人,都不会使你家的房子变多的,只不过这些人都能找到你家而已。所以当h和p2都指向同一个地址的时候,这两个做的是同一个操作
关于c语言链表的一个问题h->next=p1,p2->next=p1是什么意思,又有什么作用
C语言小问题:p2->next=p1->next 一般用在什么情况?
C语言p2->front->next=p1表示什么
p2->next=p1是什么意思
p2->next=p1;p2=p1;
C++p1->next=p2;和p2=p1->next;是不是都代表p2指向p1的下一个地址?
p1=p2;p1->next!=NULL;p1=p1->next
p2=p1;p1=p1->next;这个什么意思呀
c语言:两个指向字符串的指针,*p1,*p2,请问while(*p1++=*p2++)是什么意思?
staticinthand=0;p2->next=p1->next;oveax,dwRetret
while(p1) while(p1->next) { { p1=p1->next; p1=p1->next; } }
c语言p=p1;p1=p2;p2=p这句是什么意思