solomonzw 2023-04-24 16:42 采纳率: 0%
浏览 8

关于#链表#的问题,请各位专家解答!(语言-c语言)

录入学生信息后就没法显示

```c
#include<stdlib.h>
#include<stdio.h>
#include<string.h> 
#include<conio.h>
typedef struct student
{
    char name[20];
    int age;
    int stuNum;
    int score;
}student;
typedef struct Node
{
    student stu;
    struct Node *pNext;
}Node;
Node *p_Head=NULL;
void Inputstudent()
{
Node *pNewNode=(Node*)malloc(sizeof(Node));                                              
 pNewNode->pNext=NULL;
 if(p_Head==NULL)
 {
     p_Head==pNewNode;
 }else{
pNewNode->pNext=p_Head;
p_Head =pNewNode;
 }
 printf("请输入学生姓名:\n");
 scanf("%s",pNewNode->stu.name);
 printf("请输入学生年龄:\n");
 scanf("%d",&pNewNode->stu.age);
printf("请输入学生的学号:\n");
scanf("%d",&pNewNode->stu.stuNum);
printf("请输入学生的成绩:\n");
scanf("%d",&pNewNode->stu.score);
printf("学生信息录入成功。\n");
Node* p = pNewNode;
printf("*\t%d\t*\t%s\t*\t%d\t*\t%d*\n",p->stu.stuNum,p->stu.name,p->stu.age,p->stu.score);
system("pause");
system("cls");
}
void printstudent(){
    system("cls");
    printf("****************************\n");
    printf("*\t欢迎使用高校学生成绩管理系统v1.1t*\n");
    printf("****************************\n");
    printf("*\t学号\t*\t姓名\t*\t年龄\t*\t成绩*\n"); 
    printf("****************************\n");
    //遍历链表
    Node* p = p_Head->pNext;    
    while(p)
    {
        printf("*\t%d\t*\t%s\t*\t%d\t*\t%d*\n",p->stu.stuNum,p->stu.name,p->stu.age,p->stu.score);
        p=p->pNext;
        system("pause");
     } 
     system("pause");
     system("cls");
}
Node* findstudent()
{
    int nstuNum;
    char szName[20];
    printf("请输入要查找的学生的学号:\n");
    scanf("%d",&nstuNum);
    printf("请输入要查找的学生的姓名:\n");
    scanf("%s",szName);
    Node*p=p_Head;
    while(p!=NULL){
        if(p->stu.stuNum == nstuNum||0 == strcmp(p->stu.name,szName))
        {
          if(p!=NULL){
                                    printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",p->stu.stuNum,p->stu.name,p->stu.age,p->stu.score);
                                }else{
                                    printf("没有找到该学员。\n");
                                    system("pause");
                                    system("cls");;  
        }   
         p=p->pNext;     
    }
    
}
}
void modifystudent()    
    {
        int nstuNum;
        printf("请输入需要修改的学生信息的学号:\n");
        scanf("%d",&nstuNum);
        Node*p= p_Head;
        while(p!=NULL){
        if(p->stu.stuNum == nstuNum){
        printf("请输入要修改的学生姓名 年龄成绩:\n");
        scanf("%s%d%d",    p->stu.name,&p->stu.age,&p->stu.score);
        printf("修改成功\n");
        break;
     }
    p=p->pNext;
    if(p==NULL){
        printf("未找到该学员\n");
    }
    system("pause");
     system("cls");
    }
}
void deletestudent()
{
    int nstuNum;
    printf("请输入要删除的学生的学号:\n");
    scanf("%d",&nstuNum);
    Node*p1,p2;
    if(p_Head->stu.stuNum == nstuNum)
    {
        p1 = p_Head;
        p_Head = p_Head->pNext;
        free(p1);
        return; 
    }
    //如果 不是头节点
    Node *p=p_Head;
    while(p->pNext!=NULL)
    {
    if(p->pNext->stu.stuNum == nstuNum)
    {
        p=p->pNext;
        p->pNext = p->pNext->pNext;
        free(p->pNext);
        return;
        system("pause");
     system("cls");
     p = p->pNext;
     if(p->pNext == NULL)
     {
     break;    
     } 
        }    
    } 
 } 
 welcome()
 {
     printf("****************************\n");
     printf("*\t欢迎使用高校学生成绩管理系统v1.1t*\n");
    printf("****************************\n");
    printf("*\t学号\t*\t姓名\t*\t年龄\t*\t成绩*"); 
    printf("****************************\n");
    printf("1.录入学生信息\n");
    printf("2.打印学生信息\n");
    printf("3.找学生信息\n");
    printf("4.修改学生信息\n");
    printf("5.删除学生信息\n");
 }
 
int main()
{
    while(1)
    {
        welcome();
        char ch = getch();
        switch(ch)
        {
            case '1':
                Inputstudent();
                break;
                    case '2':
                        printstudent();
                        break; 
                            case '3':
                                Node*findstudent();
                                    break; 
                                    case '4':
                                        modifystudent();
                                        break;
                                        case '5':
                                        deletestudent(); 
                                        break;
                                        
                                        
                                    
                                        
        }
    }
}


```

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-04-24 17:06
    关注

    27行p_Head==pNewNode;改为p_Head=pNewNode; 赋值啊,不是判断相等

    评论

报告相同问题?

问题事件

  • 创建了问题 4月24日

悬赏问题

  • ¥15 有没有下面符合以下条件的电子时钟的代码
  • ¥15 主成分分析中的原始数据矩阵行列分别代表什么
  • ¥20 PVE虚拟机运行不流畅,出现卡顿
  • ¥15 使用stata进行网状meta分析时遇到的问题
  • ¥15 ffmpeg音视频同步
  • ¥20 Ubuntu18.04卸载Python2后无可视化界面问题
  • ¥15 php同一个单元格里多选提交,更新表格
  • ¥15 Vue 前端调用本地jar包有什么方法?
  • ¥15 基础的图像处理问题求解答
  • ¥50 全国两定智慧医保接口开发相关业务文档,以及技术实现流程文档