⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy2_1.c

📁 数据结构实验与学习指导
💻 C
字号:
/* sy2_1.c */
#include"sj.h"                        /*调用自定义的头文件*/
typedef struct  std_info {
      int Num;
      char Name[8];
      float Score;
   }ElemType ;
typedef struct
 {ElemType elem[MAXSIZE];
   int length;
 }SeqList;                           /*定义顺序存储结构*/
void Create_SeqList(SeqList *L)      /*创建顺序表*/
 { int i,n,num;
   char ss[8];
   float score;
   printf("请输入顺序表的长度:\n");
   scanf("%d",&n);
   L->length=n;
   for(i=1;i<=n;i++)                   /*输入n个学生信息*/
    { printf("请输入一个学生的信息:Num,Name,Score:\n");
      scanf("%d",&num);
      getchar();               /*接收scanf语句最后的回车*/
      gets(ss);
      scanf("%f",&score);
      L->elem[i].Num=num;
      strcpy(L->elem[i].Name,ss);
      L->elem[i].Score=score;
   }
  }/* Create_SeqList*/
 void  Print_SeqList(SeqList *L)            /*输出顺序表*/
  { int i;
    printf("顺序表的内容为:\n");
    for(i=1;i<=L->length;i++)    printf("num=%d,Name=%s,score=%f\n",L->elem[i].Num,L->elem[i].Name,L->elem[i].Score);
   }/* Print_SeqList*/
  Status  Insert_SeqList(SeqList *L,int i,ElemType x)/*顺序表的插入操作*/
   { int j;
    if(i<1||i>L->length+1)
      return  ERROR;                            /*判断非法插入位置*/
    if (L->length==MAXSIZE-1) return OVERFLOW;
    for(j=L->length;j>=i;j--)
      L->elem[j+1]=L->elem[j];
    L->elem[i]=x;
    ++L->length;                                /*插入成功,表长度加1*/
    return OK;
 }/* Insert_SeqList*/
 Status  Delete_SeqList(SeqList *L,int i)    /*顺序表的删除操作*/
    /*删除表中第i个元素,若表空或不存在指定元素,则返回ERROR*/
    { int  j;
      if(i<1 || i>L->length)                 /* 检查空表及删除位置的合法性*/
       return ERROR  ;
       for(j=i;j<=L->length-1; j++)
           L->elem[j]=L->elem[j+1];            /* 向上移动 */
       L->length--;
       return  OK ;                            /* 删除成功 */
   }/* Delete_SeqList*/
 void  Inversion_SeqList(SeqList *L)        /*顺序表的逆置*/
  { 
    int i,j;ElemType t;
    for( i=1,j=L->length; i<j; i++)
     {t= L->elem[i];
      L->elem[i]=L->elem[L->length-i+1];
      L->elem[L->length-i+1]=t;
      }
  }/* Inversion_SeqList */
void main()
 { int j=1,i,n,num;
   char ss[8];
   float score;
    SeqList *L=(SeqList *)malloc(sizeof(SeqList));
    ElemType  x;
    Create_SeqList(L);
   Print_SeqList(L);
  while(j)             /*功能菜单*/
   { printf("顺序表操作! \n  请输入一个0到3的整数,选择您的操作\n");
     printf("1:  顺序表插入\n");
     printf("2:  顺序表删除\n");
     printf("3:  顺序表逆置\n");
     printf("0:  退出程序\n");
     scanf("%d",&j);
     switch(j)
       { case 0: printf("退出程序\n");exit(0);
         case 1:/*首先要输入插入位置和待插入学生的信息*/
          printf("请输入一个学生的信息(Num,Name,Score)和插入位置:\n");
        scanf("%d",&num);
        getchar();/*消除上一个scanf后的回车符号*/
          gets(ss);
          scanf("%f",&score);
          scanf("%d",&i);
          x.Num=num;
          strcpy(x.Name,ss);
          x.Score=score;
          i=Insert_SeqList(L,i,x);
          if(!i)
             printf ("插入位置错误!\n");
           else
                Print_SeqList(L); break;
         case 2: printf("请输入要删除的学生信息在顺序表中的位置(整数)\n");
                scanf("%d",&i);
                i=Delete_SeqList(L,i);/*输入删除位置*/
             if(!i)
                 printf("删除位置输入错误!\n");
             else
                 Print_SeqList(L);     break;
         case 3: Inversion_SeqList(L);
                 Print_SeqList(L);     break;
         default: printf("输入错误,请重新输入!\n");
        }
      }/* while */
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -