本帖最后由 瑾❤ 于 2014-6-13 22:50 编辑
- /*
- *使用单链表结构存储所有人的信息
- */
- #include <stdio.h>
- #include <string.h>
- typedef struct Person
- {
- char name[50];
- struct Person *nextPer; //指向下一个人
- }PersonInfo;
- //定义头指针结构体
- typedef struct
- {
- int count;
- struct Person *nextPer; //指向下一个人
- }PerHead;
- //添加人并输出处理结果
- void addPer(PerHead *source)
- {
- //存储待添加的人
- PersonInfo per;
- PersonInfo *temp;
- //提示/输入姓名
- printf("Input the name:");
- scanf("%s",per.name);
- getchar();
- //将人存入source链表中,并将计数器加一
- source->count++;
- per.nextPer=source->nextPer;
- source->nextPer=&per;
- printf("\nAdd student:%s",per.name);
- //打印全部人
- printf("\n_________ALL_________\n");
- printf("have %d person\n",source->count);
- temp=source->nextPer;
- while(temp!=NULL)
- {
- printf("person:%s\n",temp->name);
- temp=temp->nextPer;
- }
- }
- int main()
- {
- //定义变量用于存储所有人
- PerHead AllPerson={0,NULL};
- while(1)
- {
- char command;
- printf("\n^^^^^^^^^^^^^^^^^^^^^^^^\n");
- printf("A(Add) Q(Quit)\n");//提示用户输入对应的命令字符(A、Q)
- scanf("%c",&command);
- getchar();
- switch(command)//根据命令的不同执行不同操作
- {
- case 'Q': //退出
- return 0;
- case'A': //添加
- addPer(&AllPerson);
- break;
- default: //其他非法字符时不做处理
- break;
- }
- }
- return 0;
- }
复制代码 程序功能:从控制台循环输入人的信息并存入一个单链表AllPerson中
问题描述:第一次添加人员时一切正常,第二次添加人员后,输出全部人员时进入死循环,并打印的是同一个人,这是什么原因呢?
|
|