如何在执行代码的时候,她只能显示一部分就执行不下去了?(语言-c++)

在尝试修改一个代码的时候,它不显示错,但是运行不了,求指导
用代码块功能插入代码,请勿粘贴截图 
#include <stdio.h>
#define MaxLen 10
typedef struct Student
{
  long int studid;
  char studname[20];
  char studsex;
  int studscore;
  int studyear;
} DataType;
typedef struct
{
  DataType Data[MaxLen];
  int Length;
} SeqList;
void InitList(SeqList *L)
{
  L->Length = 0;
  printf("初始化顺序表成功!");
}
//建立顺序表,存储相应的数据
void CreateList(SeqList *L, int n)
{
  int i;
  for (i = 0; i < n + 1; i++)
    {
      printf("请输入第%d个元素:", i + 1);
      printf("请输入学生的学号: ");
      scanf("%ld", &L->Data[i].studid);
      printf("请输入学生的姓名: ");
      scanf("%s", &L->Data[i].studname);
      printf("请输入学生的成绩: ");
      scanf("%d", &L->Data[i].studscore);
      printf("请输入学生的出生年份: ");
      scanf("%d", &L->Data[i].studyear);
      scanf("%d", &L->Data[i + 1]);
    }
  L->Length = i;
  printf("建立顺序表成功!");
}
void ShowList(SeqList *L)
{
  int i;
  for (i = 0; i < L->Length; i++)
    {
      printf("学号: %ld\t", L->Data[i].studid);
      printf("姓名: %s\t", L->Data[i].studname);
      printf("成绩: %d\t", L->Data[i].studscore);
      printf("出生年份:  %d\t", L->Data[i].studyear);
      printf("\n");
    }
  for (i = 1; i <= L->Length - 1; i++)
    {
      printf("%d->", L->Data[i]);
    }
  printf("%d", L->Data[i]);
}
int InsertElement(SeqList *L, int i, DataType x)
{
  int j;
  if (L->Length >= MaxLen)
    {
      printf("顺序表已满!");
      return -1;
    }
  if (i < 1 || L->Length)
    {
      printf("插入位置出错!");
      return 0;
    }
  if (i == L->Length + 1)
    {
      L->Data[i - 1] = x;
      L->Length++;
      return 1;
    }
  for (j = L->Length - 1; j >= i - 1; j--)
    {
      L->Data[j + 1] = L->Data[j];
    }
  L->Data[i - 1] = x;
  L->Length++;
  return 1;
}
int DelElement(SeqList *L, int i, DataType *x)
{
  int j;
  if (L->Length == 0)
    {
      printf("顺序表为空!");
      return 0;
    }
  if (i < 1 || i > L->Length)
    {
      printf("不存在第%d个元素", i);
      return 0;
    }
  *x = L->Data[i - 1];
  for (j = i; j < L->Length; j++)
    {
      L->Data[j - 1] = L->Data[j];
    }
  L->Length--;
  return 1;
}
void InsertSort(SeqList *sl)
{
  int i, j;
  for (i = 2; i < sl->Length; i++)
    {
      sl->Data[0] = sl->Data[i];
      j = i - 1;
      while (sl->Data[0].studscore < sl->Data[j].studscore)
        {
          sl->Data[j + 1] = sl->Data[j];
          j = j - 1;
        }
      sl->Data[j + 1] = sl->Data[0];
    }
}
void BubbleSort(SeqList *sl)
{
  int i, j, exchange;
  DataType temp;
  int n = sl->Length;
  for (i = 1; i < n; i++)
    {
      exchange = 0;
      for (j = 1; j <= n - i; j++)
        if (sl->Data[j].studscore > sl->Data[j + 1].studscore)
          {
            temp = sl->Data[j];
            sl->Data[j] = sl->Data[j + 1];
            sl->Data[j + 1] = temp;
            exchange = 1;
          }
      if (exchange == 0)
        return;
    }
}
void Menu()
{
  printf("\n========================= ");
  printf("\n            ");
  printf("\n========================= ");
  printf("\n         顺序表的各种操作 ");
  printf("\n========================= ");
  printf("\n|  1--建立顺序表         |");
  printf("\n|  2--插入元素           |");
  printf("\n|  3--删除元素           |");
  printf("\n|  4--显示顺序表所有元素 |");
  printf("\n|  5--初始化顺序表       |");
  printf("\n|  6--求顺序表的长度     |");
  printf("\n|  7--直接排序           |");
  printf("\n|  0--返回               |");
  printf("\n========================= ");
  printf("\n   请输入菜单号(0-7):");
}
int main(int argc, char *argv[])
{
  int menid, n, p;
  SeqList *s, st, stuList, *L;
  DataType x,*val,m;
  
  s = &st;
  L = &stuList;
  val = &m;
  Menu();
  scanf("%d", &menid);
  while (1)
    {
      switch (menid)
        {
        case 1:
          printf("建立顺序表\n");
          printf("请输入顺序表元素个数: ");
          scanf("%d", &n);
          CreateList(L, n);
          break;
        case 2:
          printf("插入元素\n");
          printf("请输入要插入的位置和值: ");
          scanf("%d%d", &p, &x); //这里的x要输入Student的每个值的
          InsertElement(L, p, x);
          break;
        case 3:
          printf("删除元素\n");
          printf("请输入要删除的位置: ");
          scanf("%d", &p);
          DelElement(L, p, val);
          printf("已成功删除元素%d\n", *val);
          break;
        case 4:
          printf("显示顺序表所有元素\n");
          ShowList(L);
          break;
        case 5:
          printf("初始化顺序表\n");
          InitList(L);
          break;
        case 6:
          printf("求顺序表的长度\n");
          printf("该顺序表的长度是%d个元素\n", L->Length);
          break;
        case 7:
          printf("对顺序表进行直接插入排序");
          InsertSort(L);
          break;
          InsertSort(L);
          break;
        case 0:
          printf("退出程序\n");
          return 0;
          break;
        }
      printf("\n请输入菜单号 (0-7): ");
      scanf("%d", &menid);
    }
  return 0;
}
无法正常运行
我尝试更换输入的那个x结构体,但是还是没有成功
我想要列表功能能够正常运行