C语言链表,为什么输出的时候只能输出q->a的值

#include<stdio.h>#include<stdlib.h>#include<string.h>//创建结构体structnode{chara[11];char... #include <stdio.h>
#include <stdlib.h>
#include <string.h>

//创建结构体
struct node{
char a[11];
char name[20];
struct node *next;
};
//为了方便
typedef struct node linknode;
typedef linknode *linklist;

//创建链表
linklist creatNode(){
int judge;
linklist head,tail,q;
head = tail = NULL;
printf("是否继续输入?(input 1 or 0)\n");
scanf("%d",&judge);
while(judge) {
q = (linklist)malloc(sizeof(linknode));
printf("请输入\t姓名\t手机号:\n");
scanf("%s",q->name);
scanf("%s",q->a);
if( head==NULL)
head = tail = q;
else{
tail->next = q;
tail = q;
}
printf("是否继续输入?(input 1 or 0)\n");
scanf("%d",&judge);
}
if(tail != NULL)//收尾
tail->next = NULL;
return head;
}

printLink(linklist head)
{
linklist p;
p = head;
while(p!=NULL)
{
puts(p->name);
puts(p->a);
printf("\n");
p=p->next;
}
}

printScreen(){
printf("\n\n\n");
printf("\t\t\t\t\t--------------------------------\n");
printf("\t\t\t\t\t\t 1.新建链表\n");
printf("\t\t\t\t\t\t 2.显示链表\n");
printf("\t\t\t\t\t\t 3.功能界面\n");
printf("\t\t\t\t\t\t 4.退出程序\n");
printf("\t\t\t\t\t--------------------------------\n");
}

int main()
{
int choose;
linklist head=NULL;
printScreen();
while(1){
printf("\t\t\t\t\t 请输入功能前序号:");
scanf("%d",&choose);
switch(choose){
case 1:head=creatNode();break;
case 2:printLink(head);break;
case 3:printScreen();break;
case 4:printf("程序结束,谢谢您的使用!");exit(0);
}
}
return 0;

}
展开
 我来答
My_Persistence
2018-01-02 · TA获得超过3470个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:460万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>  //system()函数相应的头文件

//创建结构体
struct node{
char a[11];
char name[20];
struct node *next;
}; 
//为了方便 
typedef struct node linknode;
typedef linknode *linklist;

//创建链表 
linklist creatNode(){
int judge;
linklist head,tail,q;
head = tail = NULL;
printf("是否继续输入?(input 1 or 0)\n");
scanf("%d",&judge);
while(judge) {
q = (linklist)malloc(sizeof(linknode));
printf("请输入\t姓名\t手机号:\n");
scanf("%s",q->name);
scanf("%s",q->a);
if( head==NULL)
head = tail = q;
else{
tail->next = q;
tail = q;
}
printf("是否继续输入?(input 1 or 0)\n");
scanf("%d",&judge);
}
if(tail != NULL)//收尾 
tail->next = NULL;
return head;
}

printLink(linklist head)
{
linklist p;
p = head;
while(p!=NULL)
{
puts(p->name);
puts(p->a);
printf("\n");
p=p->next;
}
}

printScreen(){
system("cls");  //清屏操作
printf("\n\n\n");
printf("\t\t\t\t\t--------------------------------\n");
printf("\t\t\t\t\t\t 1.新建链表\n");
printf("\t\t\t\t\t\t 2.显示链表\n");
printf("\t\t\t\t\t\t 3.功能界面\n");
printf("\t\t\t\t\t\t 4.退出程序\n");
printf("\t\t\t\t\t--------------------------------\n");
}

int main()
{
int choose;
linklist head=NULL;
printScreen();
while(1){
printf("\t\t\t\t\t 请输入功能前序号:");
scanf("%d",&choose);
switch(choose){
case 1:head=creatNode();break;
case 2:printLink(head);break;
case 3:printScreen();break;
case 4:printf("程序结束,谢谢您的使用!");exit(0);
}
}
return 0;

}

//你的代码可以输出啊,我在你的“3.功能界面”给你加了条清屏操作的语句。其他的没什么问题
//我运行后可以正常输出结果啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式