吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 754|回复: 2
收起左侧

[已解决] vc++ 单链表插入输出出现覆盖问题,求大佬帮忙看一下

[复制链接]
仙女劫 发表于 2020-9-26 10:10
本帖最后由 仙女劫 于 2020-9-30 21:21 编辑

插入函数

插入函数

输出函数

输出函数

定义的数据

定义的数据

插入元素的时候 前三个都正常,但是从第四个开始会把第三个覆盖掉  求大佬帮忙看下  完整代码再最下面

错误

错误

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h> //strcmp char[20]字符串对比        strcmp(L->data.cName,p->data.cName)
//#define OK 1
//#define ERROR 0
//#define VOERFLOW -2
typedef int Status;
void menu();  //菜单
void menus();        //菜单基础上一堆操作
void charu();                 //1 插入
void shanchu();                //2 删除
void put();                        //3 输出指定元素
void puts();                 // 4 输出所有
void chazhao();                //5 查找

typedef struct _Student{ //数据域
        int nNum;
//        char cName[20];
        int nAge;
}Student;
typedef struct _LNode{        //节点
        Student data;
        struct _LNode *next;        
}LNode,*LinkList;
LinkList head=NULL;
LinkList s1;
int a=1;
int main(){
        
        menus();
        return 0;
}
void menu(){
        printf("\t\t\t单链表学生管理系统\n");
        printf("\t\t1.插入一个元素\n");
        printf("\t\t2.删除一个元素\n");
        printf("\t\t3.输出单个元素\n");
        printf("\t\t4.输出所有元素\n");
        printf("\t\t5.查找一个元素\n");
        printf("\t\t请输入:");        
}
void menus(){
        while(a){
        menu();
        scanf("%d",&a);
        if(a==1||a==2||a==3||a==4||a==5){               
        switch(a){
        case 1: charu();break;
        case 2: break;
        case 3: break;
        case 4: puts(); break;
        case 5: break;
        }
        printf("1.返回菜单\n0.退出系统\n");
        printf("请输入:");
        scanf("%d",&a);        
        if(a==0) break;
}
        else { printf("输入错误,请重新输入\n");
         }
}
        printf("退出系统成功,欢迎下次试用\n");
}
void charu(){ //1.插入元素
        LinkList NewNode =(LinkList)malloc(sizeof(LNode));
        printf("请输入学生学号\n");
        scanf("%d",&NewNode->data.nNum);
//        printf("请输入学生姓名\n");                   //报错 原因未知
//        scanf("%d",&NewNode->data.cName);
        printf("请输入学生年龄\n");
        scanf("%d",&NewNode->data.nAge);
        if(head==NULL){
                head= NewNode;
                NewNode->next=NULL;
                printf("执行了插入if\n");
        }
        else{
                s1=head;
                if(s1->next!=NULL) s1=s1->next;
                s1->next= NewNode;
                NewNode->next=NULL;
               
                printf("执行了插入else\n");
        }
        s1=head;
        while(s1!=NULL){
                printf("%d   %d \n",s1->data.nAge,s1->data.nNum);
                s1=s1->next;
        }
}
void shanchu(){ //2.删除元素
        
}
void put(){  //3.输出单个元素
        
}
void puts(){ //4.输出所有元素
        s1=head;
        while(s1!=NULL){
                printf("nNum=%d,   nAge=%d\n",s1->data.nNum,s1->data.nAge);
                s1=s1->next;        
                printf("输出\n");
        }

}
void chazhao(){  //5.查找一个元素
        
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

EzGDNull 发表于 2020-9-26 23:35
[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h> //strcmp char[20]字符串对比        strcmp(L->data.cName,p->data.cName)
//#define OK 1
//#define ERROR 0
//#define VOERFLOW -2
typedef int Status;
void menu();  //菜单 
void menus();        //菜单基础上一堆操作 
void charu();                 //1 插入 
void shanchu();                //2 删除 
void put();                        //3 输出指定元素 
void puts();                 // 4 输出所有
void chazhao();                //5 查找 

typedef struct _Student{ //数据域 
        int nNum;
//        char cName[20]; 
        int nAge;
}Student;
typedef struct _LNode{        //节点 
        Student data;
        struct _LNode *next;        
}LNode,*LinkList;
LinkList head=NULL;
LinkList s1;
int a=1;
int main(){
        
        menus();
        return 0;
} 
void menu(){
        printf("\t\t\t单链表学生管理系统\n");
        printf("\t\t1.插入一个元素\n");
        printf("\t\t2.删除一个元素\n");
        printf("\t\t3.输出单个元素\n");
        printf("\t\t4.输出所有元素\n");
        printf("\t\t5.查找一个元素\n");
        printf("\t\t请输入:");        
}
void menus(){
        while(a){
        menu(); 
        scanf("%d",&a);
        if(a==1||a==2||a==3||a==4||a==5){                
        switch(a){
        case 1: charu();break;
        case 2: break;
        case 3: break;
        case 4: puts(); break;
        case 5: break; 
        }
        printf("1.返回菜单\n0.退出系统\n"); 
        printf("请输入:"); 
        scanf("%d",&a);        
        if(a==0) break;
}
        else { printf("输入错误,请重新输入\n");
         }
}
        printf("退出系统成功,欢迎下次试用\n"); 
} 
void charu(){ //1.插入元素 
        LinkList NewNode =(LinkList)malloc(sizeof(LNode));
        printf("请输入学生学号\n");
        scanf("%d",&NewNode->data.nNum);
//        printf("请输入学生姓名\n");                   //报错 原因未知 
//        scanf("%d",&NewNode->data.cName);
        printf("请输入学生年龄\n");
        scanf("%d",&NewNode->data.nAge); 
        if(head==NULL){
                head= NewNode;
                NewNode->next=NULL;
                printf("执行了插入if\n");
        }
        else{
                s1=head;
              //  if(s1->next!=NULL) s1=s1->next;试一下把这个if 改成while
               while(s1->next!=NULL) s1=s1->next;
                s1->next= NewNode;
                NewNode->next=NULL;
                
                printf("执行了插入else\n");
        }
        s1=head;
        while(s1!=NULL){
                printf("%d   %d \n",s1->data.nAge,s1->data.nNum);
                s1=s1->next;
        } 
} 
void shanchu(){ //2.删除元素 
        
}
void put(){  //3.输出单个元素 
        
} 
void puts(){ //4.输出所有元素 
        s1=head;
        while(s1!=NULL){
                printf("nNum=%d,   nAge=%d\n",s1->data.nNum,s1->data.nAge);
                s1=s1->next;        
                printf("输出\n");
        }

}
void chazhao(){  //5.查找一个元素 
        
}
EzGDNull 发表于 2020-9-26 23:39
[C++] 纯文本查看 复制代码
//        printf("请输入学生姓名\n");                   //报错 原因未知 
//        scanf("%d",&NewNode->data.cName);这里报错,试一下把这d改成s,输入类型不对
scanf("%s",&NewNode->data.cName);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
仙女劫 + 1 + 1 嗨呀,感谢老哥,没想到是这点错了。。

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 07:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表