已知顺序表L长度为n,试编写算法实现在顺序表中删除值为elem的数据元素(其中n与elem从键盘输入)

#include<stdio.h>

#include<stdlib.h>

#define ERROR 0

#define OK 1

#define OVERFLOW -1

typedef int elemtype;

typedef int status;

#define M 100

typedef struct{              //定义顺序表

      elemtype  *elem;

      int length;

      int listsize;

}sqlist;

status  initlist(sqlist &l)     //初始化顺序表

{

   l.elem=(elemtype *) malloc(M*sizeof(elemtype));

   if (!l.elem)  exit(OVERFLOW);

   l.length=0;

   l.listsize=M;

   return OK;

}

status input(sqlist &l,int n)    //输入函数

{

int i=0;

    if(n>l.listsize) return ERROR;

    for(i=0;i<n;i++)

{

scanf("%d",&l.elem[i]);

}

    l.length=n;

    return  OK;

}

status output(sqlist l)    //输出函数

{

int i;

    for(i=0;i<l.length;i++)

    printf("%d ",l.elem[i]);

    printf("\n");

    return OK;

}

status ldelete(sqlist &l,int e)   //删除元素函数

{

int i=0;

elemtype *p;

for(p=l.elem;p<l.elem+l.length+1;p++,i++)

{

if(*p==e)

break;

}

for(p=l.elem+i;p<l.elem+l.length-1;p++)

*p=*(p+1);

l.length--;

return OK;

}

void main()    //主函数

{

 sqlist l;

 int n,e;

 initlist(l);

 printf("请输入线性表l的元素个数n:\n");

 scanf("%d",&n);

 printf("请输入线性表l的%d个元素:\n",n);

 input(l,n);

 printf("请输入要删除的元素elem:\n");

 scanf("%d",&e);

 ldelete(l,e);

 printf("删除后的顺序表为:\n");

 output(l);

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值