标题:有大佬知道为什么do while循环里重复定义结构指针是可以的呢,还有给结构指 ...
只看楼主
铁甲
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-10-21
结帖率:80%
已结贴  问题点数:20 回复次数:4 
有大佬知道为什么do while循环里重复定义结构指针是可以的呢,还有给结构指正赋NUll是怎么回事,有啥好处
#include<stdio.h>
#include<stdlib.h>
typedef struct _node{
int value;
struct _node *next;
}Node;
int main(int argc,char const *argv[]){
Node *head=NULL;
int number;
do {
scanf("%d",&number);
if(number!=-1){
Node *p=(Node *)malloc(sizeof(Node));
p->value=number;
p->next=NULL;
Node *last=head;
if(last){
while(last->next){
last=last->next
}
last->next=p;
}
else {
head=p;
}
}while(number!=-1);

return 0;
}
搜索更多相关主题的帖子: next Node NUll while 结构 
2020-11-11 09:51
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
先把对齐缩进处理好
代码写在[ c o d e ]这个标签里面

https://zh.
2020-11-11 09:53
铁甲
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-10-21
得分:0 

#include<stdio.h>
#include<stdlib.h>
typedef struct _node{
    int value;
    struct _node *next;
}Node;
int main(int argc,char const *argv[]){
    Node *head=NULL;
    int number;
    do {
        scanf("%d",&number);
        if(number!=-1){
            Node *p=(Node *)malloc(sizeof(Node));
            p->value=number;
            p->next=NULL;
            Node *last=head;
            if(last){
                while(last->next){
                last=last->next;
            }
                last->next=p;
            }
            else {
                head=p;
            }
        }
    }while(number!=-1);

return 0;
}
2020-11-11 09:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct _node
{
    int value;
    struct _node *next;
} Node;

int main( void )
{
    Node* head = NULL;
    for( int number; scanf("%d",&number)==1 && number!=-1; )
    {
        Node** last = &head;
        for( ; *last; last=&(*last)->next );

        (*last) = malloc( sizeof(Node) );
        (*last)->value = number;
        (*last)->next = NULL;
    }

    for( Node* p=head; p; p=p->next )
        printf( "%d ", p->value );
}
2020-11-11 10:14
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:15 
弄清楚一个基本概念
运行时和编译期
循环重复执行这个说的是运行时发生的事情
声明/定义变量这个是编译期的事情
定义变量的时候不用考虑有没有循环
变量会不会重复定义 只和作用域这个概念有关系
同一个作用域里面 多次定义是错的
你的代码里面 last 这个变量所在的作用域只定义一次 语法上完全没问题

https://zh.
2020-11-11 10:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503858-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020286 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved