关于#C语言#的问题,如何解决?链表

输入字符a至f,按输入字符的顺序建立一个字符结点(每个结点存储一个字符)的单向链表,
输出该链表中的字符,并释放链表结点所占用的空间。

供参考:

#include<stdio.h>
struct node{
    char ch;
    struct node*next;
};
int main()
{
    int i;
    struct node *q,*p,*head;
    for(i=0;i<6;i++){ //生成链表
        p = (struct node*)malloc(sizeof(struct node));
        p->ch = 'a' + i;
        p->next = NULL;
        if(i==0)
           head = p;
        else
           q->next=p;
        q = p;
    }
    p=head;
    while(p){     //输出链表
        printf(" %c",p->ch);
        p = p->next;
    }
    while(head){   //释放链表
        p=head;
        head = p->next;
        free(p);
    }
    return 0;
}