#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;