微峰 2014-09-17 05:19
浏览 846

C语言的递归输出,会输出重复的打印信息,不知道是不是跟输出流缓冲有关

我写的单向链表创建和遍历打印的函数输出一些信息,不知道是怎么来的,希望各位大神能给予指点。
代码:
#include
#include
#include
#include
typedef struct node{
char value;
struct node *m_next;
}inode;

void CreateNodeTree(inode **treenode)
{
char a;
printf("input char,q is null:\n");
a=getchar();
if (a=='q')
{
(*treenode)=NULL;
return ;
}
else
{
treenode=(inode)malloc(sizeof(inode));
(*treenode)->value=a;
(*treenode)->m_next=NULL;
}
CreateNodeTree(&((*treenode)->m_next));

}
void PrintNode(inode *head)
{
if (head!=NULL)
{
inode *treenode=head;
while(treenode)
{
printf("value:%c\n",treenode->value);

        treenode=treenode->m_next;
    }
}
if (head==NULL)
{
    printf("head is null\n");
}

}
void main()
{
inode *head=NULL;
CreateNodeTree(&head);
PrintNode(head);

}

我输入三个节点的值a,b,c。然后进行打印
input char,q is null:
a
input char,q is null:
input char,q is null:
b
input char,q is null:
input char,q is null:
c
input char,q is null:
input char,q is null:
q
value:a
value:

value:b
value:

value:c
value:

请按任意键继续. . .

中间重复输出的信息和空的一行是怎么产生的??

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 逻辑谓词和消解原理的运用
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?