鱼C论坛

 找回密码
 立即注册
查看: 2790|回复: 1

顺序表的插入和删除操作

[复制链接]
发表于 2020-4-6 10:05:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
麻烦帮忙看下主函数要怎么修改才能运行调用顺序表的插入和删除操作

枯了


  1. #include "stdio.h"   
  2. #include "stdlib.h"   
  3. #include "io.h"  
  4. #include "math.h"  
  5. #include "time.h"

  6. #define OK 1
  7. #define ERROR 0
  8. #define TRUE 1
  9. #define FALSE 0

  10. #define MAXSIZE 20 /* 存储空间初始分配量 */

  11. typedef int Status;          /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
  12. typedef int ElemType;        /* ElemType类型根据实际情况而定,这里假设为int */


  13. Status visit(ElemType c)
  14. {
  15.     printf("%d ",c);
  16.     return OK;
  17. }
  18.        
  19. typedef struct
  20. {
  21.         ElemType data[MAXSIZE];        /* 数组,存储数据元素 */
  22.         int length;                                /* 线性表当前长度 */
  23. }SqList;



  24. Status InitList(SqList *L)
  25. {
  26.     L->length=0;
  27.     return OK;
  28. }



  29. Status ListDelete(SqList *L,int i,ElemType *e)
  30. {
  31.     int k;
  32.     if (L->length==0)               /* 线性表为空 */
  33.                 return ERROR;
  34.     if (i<1 || i>L->length)         /* 删除位置不正确 */
  35.         return ERROR;
  36.     *e=L->data[i-1];
  37.     if (i<L->length)                /* 如果删除不是最后位置 */
  38.     {
  39.         for(k=i;k<L->length;k++)/* 将删除位置后继元素前移 */
  40.                         L->data[k-1]=L->data[k];
  41.     }
  42.     L->length--;
  43.     return OK;
  44. }



  45. Status ListInsert(SqList *L,int i,ElemType e)
  46. {
  47.         int k;
  48.         if (L->length==MAXSIZE)  /* 顺序线性表已经满 */
  49.                 return ERROR;
  50.                 if (i<1 || i>L->length+1)/* 当i比第一位置小或者比最后一位置后一位置还要大时 */
  51.                 return ERROR;

  52.         if (i<=L->length)        /* 若插入数据位置不在表尾 */
  53.         {
  54.                 for(k=L->length-1;k>=i-1;k--)  /* 将要插入位置之后的数据元素向后移动一位 */
  55.                         L->data[k+1]=L->data[k];
  56.         }
  57.         L->data[i-1]=e;          /* 将新元素插入 */
  58.         L->length++;

  59.         return OK;
  60. }





  61. int main()
  62. {

  63.         int i,n,x,del;

  64.         //插入
  65.         printf("您要输入几位数:");
  66.         scanf("%d",&n);
  67.         for(i=1;i<=n;i++){
  68.                 scanf("%d",&x);
  69.                 ListInsert(L,x,i);
  70.         }
  71.        
  72.         //删除
  73.         printf("请输入你要删除的数的下标:\n",del);
  74.         scanf("%d",&del);
  75.         ListDelete(L,del);
  76.         printf("输出线性表:\n");
  77.         for(i=0;i<=L->Last;i++){
  78.                 printf("%d ",L->Data[i]);
  79.         }
  80.         printf("\n");
  81.         return 0;
  82. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-6 10:26:08 | 显示全部楼层
是我眼神不好吗,都没看到L的声明
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 19:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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