C语言动态链表建立和输出问问题

C语言动态链表问题
建立一个链表,数据值是从1到13;

#include<stdio.h>
#include<stdlib.h> 
#define N 13
struct Quan{
    int num;
    struct Quan *next;
}*p;
int main(){
    struct Quan *creat(void);
    void find(struct Quan *head);
    int i;
    p=creat();
    for(i=0;i<N;i++){
        p->next;
        printf("%d,",p->num);
    }
    return 0;
}
struct Quan *creat(void){
    int i;
    struct Quan *head=NULL,*p1,*p2;
    p1=p2=(struct Quan *)malloc(sizeof(struct Quan));
    printf("malloc=%d\n",p1);
    head=p1;
    for(i=0;i<N;i++){
        p1->num=i+1;
        p1=(struct Quan *)malloc(sizeof(struct Quan));
        p2->next=p1;
        p2=p1;
    }
    p1->next=NULL;
    return (head);
}

输出链表时,只是循环输出第一个节点的值。请问哪里出问题了?


#include<stdio.h>
#include<stdlib.h> 
#define N 13
struct Quan {
    int num;
    struct Quan *next;
}*p;
int main() {
    struct Quan *creat(void);
    void find(struct Quan *head);
    int i;
    p = creat();
    for (i = 0; i < N; i++) {
        printf("%d,", p->num);
        p = p->next;
    }
    return 0;
}
struct Quan *creat(void) {
    int i;
    struct Quan *head = NULL, *p1, *p2;
    p1 = p2 = (struct Quan *)malloc(sizeof(struct Quan));
    printf("malloc=%d\n", p1);
    head = p1;
    for (i = 0; i < N; i++) {
        p1->num = i + 1;
        p1 = (struct Quan *)malloc(sizeof(struct Quan));
        p2->next = p1;
        p2 = p1;
    }
    p1->next = NULL;
    return (head);
}

    for(i=0;i<N;i++){
        p->next;
        printf("%d,",p->num);
    }

改为

    for (i = 0; i < N; i++) {
        printf("%d,", p->num);
        p = p->next;
    }