建立链表 含有姓名和电话的黄页 遇到了问题,请修改

#include 
#include 
#include 

typedef struct YellowPage{
    int telNum;
    char name;
    struct YellowPage *next;
}YellowPage,*pYellowPage;

pYellowPage create(void){
    int i, num;
    scanf("%d",&num);
    pYellowPage phead = (pYellowPage)malloc(sizeof(YellowPage));
    phead->next = NULL;
    for(i=0; imalloc(sizeof(YellowPage));
        scanf("%s %d",pnew->name,&pnew->telNum);
        pnew->next = phead->next;
        phead->next = pnew;
    }
    return phead;          
}

void realse(YellowPage *head)
{
    YellowPage *p = head, *pre;
    while (p != NULL)
    {
        pre = p, p = p->next;
        pre->next = NULL;
        free(pre);
    }
}

void display(YellowPage *head)
{
    YellowPage *node = head;
    printf("display data \n");
    while (node != NULL)
    {
        printf("%s %d \n", node->name, node->telNum);
        node = node->next;
    }
    realse(head);
}
int main()
{
    display(create());
    return 0;
}

两处问题,结构体里name是字符串数组,代码里定义成单个字符,输出函数里 *p = head 应为 *p = head->next; ,修改如下,供参考:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct YellowPage {
    int telNum;
    char name[16];      //char name; 修改
    struct YellowPage* next;
}YellowPage, * pYellowPage;
pYellowPage create(void) {
    int i, num;
    scanf("%d", &num);
    pYellowPage phead = (pYellowPage)malloc(sizeof(YellowPage));
    phead->next = NULL;
    for (i = 0; i < num; i++)
    {
        pYellowPage pnew = (pYellowPage)malloc(sizeof(YellowPage));
        scanf("%s %d", pnew->name, &pnew->telNum);
        pnew->next = phead->next;
        phead->next = pnew;
    }
    return phead;
}
void realse(YellowPage* head)
{
    YellowPage* p = head, * pre;
    while (p != NULL)
    {
        pre = p, p = p->next;
        pre->next = NULL;
        free(pre);
    }
}
void display(YellowPage* head)
{
    YellowPage* node = head->next; //YellowPage* node = head; 修改
    printf("display data \n");
    while (node != NULL)
    {
        printf("%s %d \n", node->name, node->telNum);
        node = node->next;
    }
    realse(head);
}
int main()
{
    display(create());
    return 0;
}

你这是有固定头结点链表,display不用输出第一个节点值。
YellowPage *node = head->next;