关于动态链表,为什么头指针要为空,不为空也可以赋值p1,不是吗?


#include "stdio.h"

#include<malloc.h>

struct weapon{

int price;

int atk;

struct weapon *next;

};

struct weapon * create()

{

    struct weapon *head;

    struct weapon *p1,*p2;

    int n=0;

    p1=p2=(struct weapon*)malloc(sizeof(struct weapon));

    scanf("%d%d",&p1->price,&p1->atk);

    head=NULL;//为什么头指针要为空,不为空也可以赋值p1,不是吗?

    while(p1->price!=0){

    n++;

    if(n==1) head=p1;

    else p2->next=p1;

    p2=p1;

    p1=(struct weapon*)malloc(sizeof(struct weapon));

    scanf("%d%d",&p1->price,&p1->atk);

    }

    p2->next=NULL;


    return (head);

}

int main(){

struct weapon *p;

p=create();

printf("%d%d",p->price,p->atk);

return 0;

}


溯源1
浏览 1670回答 1
1回答

DOUBLE_l

可以的,
打开App,查看更多内容
随时随地看视频慕课网APP