输出的for循环出了什么问题

#include
#include
#include
#include
typedef struct lnode{
int date;
struct lnode *next;
}lnode,*linklist;
void createlistz(linklist &l, int n){
l=(linklist)malloc(sizeof(lnode));
int i;linklist p,q;
cout<<"请输入"<
p=(linklist)malloc(sizeof(lnode));
q=p;
cin>>p->date;
l->next=p;
for(i=2;i<=n;i++){
p=(linklist)malloc(sizeof(lnode));
cin>>p->date;
q->next=p;
q=p;
}
}
void outputlist(linklist l){
cout<<"l的元素为:";
for(;l->next;){
cout<next->date;
l=l->next;
}
}
void main(){
linklist l;int e;
createlistz(l,5);
outputlist(l);
}

改动处见注释,供参考:

#include <iostream>
//#include <iostream.h>
//#include <string.h>
//#include <stdio.h>
#include <cstdlib>
using namespace std;
typedef struct lnode{
    int    date;
    struct lnode *next;
}lnode,*linklist;
void createlistz(linklist &l, int n)
{
    l=(linklist)malloc(sizeof(lnode));
    int i;
    linklist p,q;
    cout<<"请输入"<<n<<"个值:";
    p=(linklist)malloc(sizeof(lnode));
    p->next = NULL;  //修改
    q=p;
    cin>>p->date;
    l->next=p;
    for(i=2;i<=n;i++){
        p=(linklist)malloc(sizeof(lnode));
        p->next = NULL; //修改
        cin>>p->date;
        q->next=p;
        q=p;
    }
}
void outputlist(linklist l){
    cout<<"l的元素为:";
    for(;l->next;){
        cout<<l->next->date<<" "; //修改
        //cout<next->date;
        l=l->next;
    }
}
void main()
{
    linklist l;
    int e;
    createlistz(l,5);
    outputlist(l);
}