能帮我看一下函数错哪里了吗,每一次都会进入add函数中的if(phear->next==0)可是第一次又改变啊
秃头笔记 2017-01-08 10:52:00 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node1
{
char name[20];
char number[20];
struct node1 * next;
}node;
void add(node *phear, node *ptail, char name[20], char numder[20]);
void rmall(node *phear, node *ptail);
void rm(node *phear, char name[20], node *ptail);
void traver(node *phear, char name[20], node *ptail);
void traveral(node *phear, node * ptail);
int main()
{
int a;
node * phear = (node*)malloc(sizeof(node));
phear->next = 0;
node * ptail = phear;
add(phear, ptail, "陈泽键", "15625776360");
add(phear, ptail, "吴和津", "15629298978");
add(phear, ptail, "张志森", "15623434978");
traveral(phear, ptail);
scanf_s("%d", &a);
switch (a)
{
case 1: rmall(phear, ptail);break;
case 2: rm(phear, "吴和津", ptail);
system("pause");
return 0;
}
}
void add(node *phear, node *ptail, char name[20], char number[20])
{
node * newnode = (node*)malloc(sizeof(node));
if (newnode == 0)
{
printf("新节点分配失败\n");
return ;
}
strcpy_s(newnode->name,name);
strcpy_s(newnode->number,number);
if (phear->next == 0)
{
phear = ptail = newnode;
phear->next = newnode;
getchar();
}
else
{
newnode->next = phear->next;
phear = newnode;
}
}
void rmall(node *phear,node *ptail)
{
node*p = phear;
while (p != ptail)
{
free(p);
p = phear->next;
}
}
void rm(node *phear, char name[20], node *ptail)//搜索名字删除
{
node *p = phear;
while (p != ptail)
{
if(p->next->name==name)
break;
p = p->next;
}
p->next = p->next->next;
free(p);
}
void traver(node *phear, char name[20], node *ptail)
{
node *p = phear;
while (p != ptail)
{
if(p->name==name)
{
printf("联系人%s的电话号码是%s\n", p->name, p->number);
break;
}
}
}
void traveral(node *phear, node * ptail)
{
node *p = phear;
while (p != ptail)
{
printf("联系人%s的电话号码是%s\n", p->name, p->number);
p = p->next;
}
printf("联系人%s的电话号码是%s\n", p->name, p->number);
}