//插入会员 void insert(mum *x) { int num,i; mumber *p,*q; p=x; printf("请输入你要插入位置: "); scanf("%d",&num); if(num>length)//大于链表长度时 { printf("没有找到该位置.按任意键继续..\n"); } else { printf("请输入你要插入的会员的编号、姓名、身份证号、电话、会员等级、优惠政策:\n"); q=(mum *)malloc(N); scanf("%s %s %s %s %s %s ",q->number, q->name, q->id, q->Tel, q->grade, q->sale); for(i=1; i<num; i++) p=p->next; q->next=p->next; p->next=q; length++; print(x); printf("插入会员信息成功!\n"); return ; } getch(); }这段代码只有6个指针,但为什么运行时需要插入7个值,怎样解决这个问题
时间: 2024-01-16 13:02:38 浏览: 93
这是因为代码中使用了动态内存分配,使用了malloc函数,为新节点分配内存空间。而在代码中定义了一个结构体指针q,该指针指向的是一个结构体mum,这个结构体是用来存储会员信息的。所以一共需要输入7个值,其中6个是会员信息,另外一个是用来存储节点的指针。
为了解决这个问题,可以在结构体mum中添加一个指向下一个节点的指针,这样就不需要额外使用一个指针来存储节点了。代码修改如下:
```
typedef struct mum{
char number[10];
char name[20];
char id[20];
char Tel[20];
char grade[20];
char sale[20];
struct mum *next; //指向下一个节点的指针
}mumber;
void insert(mum *x) {
int num,i;
mumber *p,*q;
p=x;
printf("请输入你要插入位置: ");
scanf("%d",&num);
if(num>length)//大于链表长度时
{
printf("没有找到该位置.按任意键继续..\n");
}
else
{
printf("请输入你要插入的会员的编号、姓名、身份证号、电话、会员等级、优惠政策:\n");
q=(mum *)malloc(N);
scanf("%s %s %s %s %s %s ",q->number, q->name, q->id, q->Tel, q->grade, q->sale);
for(i=1; i<num; i++)
p=p->next;
q->next=p->next;
p->next=q;
length++;
print(x);
printf("插入会员信息成功!\n");
return ;
}
getch();
}
```
这样就可以通过一个指针来同时存储会员信息和节点信息,只需要输入6个值即可。
阅读全文