手捧星光945 2022-08-13 19:00 采纳率: 85%
浏览 15
已结题

关于指针内容指向的问题,如何解决?

问题相关代码,请勿粘贴截图

#include
#include
using namespace std;
static int n=0;
struct List{
string name{};
long long date{};
List *next;
};

void CreatList(List *L){
L=new List;
L->next=nullptr;
}

void InputSList(List *L){
List r;
cout<<"请输入您要输入的学生数量的总数:";
cin>>n;
cout<<"请输入学生的姓名和学号"<<endl;
for(int i=0;i<n;i++) {
r=new List;
/*e = new List;
e->next=nullptr;
/
cin >>r->name>>r->date;
/r->next=e; r->next=L->next;L->next=r;
r=r->next;
/
r->next=L->next;
L->next=r;
}
cout<<"输入完成"<<endl;
}

void InsertList(List *L,int size){
List *e,*r;
e=L;
r=new List;
int count=0;
while(e&&size<n&&count!=size){
e=e->next;
count++;
}
if((count==size)&&size<n) {
cout << "请输入该学生的姓名和学号:";
cin >> r->name >> r->date;
r->next=e->next;
e->next=r;
cout<<"插入成功"<<endl;
}
}
void influenceList(List *L,int size){
List *e;
int c=0;
e=L;
int count=0;
while(e&&size<n&&count!=size){
e=e->next;
count++;
}
if((count==size)&&size<n) {
cout<<"你要修改的学生信息:"<name<<" "<date<<endl;
cout <<"请输入您想改变的信息"<<endl;
cout<<"1.姓名"<<endl<<"2.学号"<<endl;
cin>>c;
switch (c) {
case 1:
cin>>e->name;
case 2:
cin>>e->date;
default:
cout<<"您输入的有误,系统自动退出"<<endl;
break;
}
cout<<"修改成功"<<endl;
}
}
void deleteList(List *L,int size){
List *e,*r;
e=L;
r=new List;
int count=0;
while(e&&size<n&&count!=size){
e=e->next;
count++;
}
r=e;
e=e->next;
r->next=e->next;
delete e;
cout<<"已成功删除该学生信息"<<endl;
}
void showList(List *L){
List *e;
e=L;
while(e){
e=e->next;
cout<<"学生姓名:"<name<<"学号:"<date;
}
cout<<"所有学生均如上列"<<endl;
}
int main(){
List *L;
CreatList(L);
cout<<"欢迎进入学生信息管理系统"<<endl;
cout<<"请选择您要执行的功能"<<endl;
cout<<"1.创建学生班级"<<endl;
cout<<"2.添加学生信息"<<endl;
cout<<"3.修改学生信息"<<endl;
cout<<"4.删除学生信息"<<endl;
cout<<"5.查看学生信息"<<endl;
int a{};int size{};
cin>>a;
switch (a) {
case 1:
InputSList(L);
break;
case 2:
cout<<"请输入您要插入的序号"<<endl;
cin>>size;
InsertList(L,size);
break;
case 3:
cout<<"请输入您要修改学生的序号"<<endl;
cin>>size;
influenceList(L,size);
break;
case 4:
cout<<"请输入您要删除学生的序号"<<endl;
cin>>size;
deleteList(L,size);
break;
case 5:
cout<<"输出全部信息,如下:"<<endl;
showList(L);
break;
}
}

运行结果及报错内容

img


输了一次之后就完全崩掉了

我想要达到的结果

正确输入学生信息

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-08-13 19:09
    关注

    List *L;
    CreatList(L);
    你没有给L分配空间啊,就在CreateList函数中直接r->next = L->next,会崩溃的
    改为
    List *L = new List;
    L->next = NULL;
    CreateList(L);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月13日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件