C4n 2021-03-17 12:28 采纳率: 80%
浏览 64
已结题

想知道我这个代码执行output之后为什么不会输出所有节点的数据?

软件:dev c++

方法:每次选择1后,输入学生学号信息,并输出已写入学号信息的所有学生的学号信息。

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define New_node (stu*)malloc(sizeof(stu))
typedef struct student
{
	int Student_ID;
	struct student *next;

}stu;
void input(stu*R) //输入学生信息 
{
	stu *p=New_node; //p作为新节点存放p的数据 
	printf("\n请输入十位数的学号:\n");
	scanf("%d",&p->Student_ID);
	p->next=NULL;
	R->next=p;
	R=p;
}
void output(stu *L)
{
	stu *p;
	p=L->next;
	while(p!=NULL)
	{
		printf("%d\n",p->Student_ID);
		p=p->next;
	}
	
}
main()
{
	stu *L=New_node;   
	L->next=NULL;     //建立头节点
	stu *R=L;         //尾指针指向头节点 
	while(1)
	{
		int i;
		printf("请输入选择\n"); 
		scanf("%d",&i);
		switch(i)
		{
			case 1:input(R);
		    case 2:output(L);
		}
		
	}
	
}
  • 写回答

4条回答 默认 最新

  • cpp_learners 2021-03-17 13:33
    关注

    你的插入方式有问题,下面是我给你改好的代码:

    void input(stu*R) //输入学生信息 
    {
    	stu *p = New_node; //p作为新节点存放p的数据 
    	printf("\n请输入十位数的学号:\n");
    	scanf_s("%d", &p->Student_ID);
    
    	while (R->next) R = R->next;	// 找到最后一个节点
    
    	p->next = NULL;
    	R->next = p;
    	//R = p;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月2日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)