首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

单链表使不退出程序进行二次输入的数据连接在第一次之后

2012-04-13 
求助 单链表使不退出程序进行二次输入的数据连接在第一次之后。void CreatFromTail(LinkList L){LinkList s

求助 单链表使不退出程序进行二次输入的数据连接在第一次之后。
void CreatFromTail(LinkList L)
{
  LinkList s;
  int flag=1;

while(flag)
{

s=(LinkList)malloc(sizeof(LNode));
//L->next=s;

printf ("请输入编号:");
scanf ("%d",&s->data.worknum);
fflush (stdin);
if(s->data.worknum!=0)
{

printf ("请输入姓名:");
scanf ("%s",s->data.name);
printf ("请输入性别:");
scanf ("%s",s->data.sex);
printf ("请输入年龄:");
scanf ("%d",&s->data.age);
fflush(stdin);
printf ("请输入职位:");
scanf ("%s",s->data.position);
printf ("请输入薪水:");
scanf ("%lf",&s->data.salary);
//r=(LinkList)malloc(sizeof(LNode));
s->next=L->next;
L->next=s;
}
else
{
flag=0;
s->next=NULL;
}
}
return ;
}


这是创建链表的函数,L为建立的头结点
LinkList H;
H=(LinkList)malloc(sizeof(LNode));

主函数中调用:
case 1:
printf ("欢迎进入录入员工信息界面\n");
CreatFromTail(H);
break;

[解决办法]
如果想要输入到尾部,你应该给链表配置一个尾指针LinkList L,它始终指向链表尾部。

然后CreatFromTail函数里这样写参数表
void CreatFromTail(LinkList *L)

添加表尾不能这样了:
s->next=L->next;
L->next=s;
更改为:
(*L)->next=s;
s->next=NULL;
*L=s;

创建链表时要给L赋值:
L=H;

main里的调用如此写:
CreatFromTail(&L);

热点排行