使用结构体的方法写出以下程序

img

供参考:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node {
    short  data;
    struct node* next;
}Node;
int main()
{
    int n = 5, i;
    Node* head = NULL, * p = NULL, * q = NULL;
    printf("请输入%d个节点的数据==>\n", n);
    for (i = 0; i < n; i++)  //输入10个节点的值,不带头节点
    {
        p = (Node*)malloc(sizeof(Node));
        scanf("%d", &p->data);
        p->next = NULL;
        if (head == NULL) {
            head = p;
        }
        else {
            q->next = p;
        }
        q = p;
    }
    q = head;
    while (q)//输出链表
    {
        printf("节点值==>%d\n", q->data);
        q = q->next;
    }
    while (head)//释放链表
    {
        p = head;
        head = p->next;
        free(p);
    }
    return 0;
}

可以有人来帮忙解答一下吗