打印单链表的时候为什么会出现这种情况

img


#include<stdio.h>
#include<stdlib.h>
typedef struct lnode{
    int data;
    struct lnode *next;
}lnode,*linklist;

linklist creatlist(linklist &l){
    lnode *s;int x;
    l=(linklist)malloc(sizeof(lnode));
    l->next =NULL;
    scanf("%d",&x);
    while(x!=9999){
        s=(linklist)malloc(sizeof(lnode));
        s->data =x;
        s->next =l->next ;
        l->next =s;
        scanf("%d",&x);
    }
    return l;
}
void printflist(linklist &l){
    int i=1;
    lnode *t;
    t =l->next ;
    while(l->next !=NULL){
        printf("%d",&t->data );
        t->next =t->next ;
    }
}

int main(){
   lnode *l;
   creatlist(l);
   printflist(l);
   return 0;
}

这问题出在哪儿呀,我记得我之前大一的时候一样的代码可以运行呀

死循环了吧

void printflist(linklist &l){
    int i=1;
    lnode *t = l->next;
    while(t !=NULL){
        printf("%d",t->data );   //多了个&
        t=t->next ;        //你写成t->next = t->next啦
    }
}


打印函数修改如下,供参考:

void printflist(linklist &l){
    int i=1;
    lnode *t;
    t =l->next ;
    while(t!=NULL){ //(l->next !=NULL)
        printf("%d",t->data ); // printf("%d",&t->data );
        t =t->next ;    //t->next =t->next ;
    }
}