【作业】数据结构【线性表】

【题目】:

顺序存储的线性表A,其数据元素为整型,试编写一算法,将A拆成B和C两个表,使A中元素值大于等于0的元素放入B,小于0的放入C中,要求:

(1)、表B和表C另外设置存储空间。

(2)、表B和表C不另外设置空间,而利用A的空间。


【分析】:

对于第一问,其实大家就非常容易想到,其实只要另外开辟两个线性表,

对于第一个线性表A历遍即可。

只要满足  a[i]>=0 ,放在线性表B,

否则,放在线性表C;

 

用顺序结构和链式结构都可以实现。

以下是我用顺序结构实现的。

附上代码:

#include<stdio.h>         //线性表:顺序存储结构
#include<string.h>
#define MAXSIZE 9
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef int Status;
typedef struct Sqlist{
    ElemType data[MAXSIZE];
    int length;
    Sqlist(){
        length=0;
    }
}Sqlist;
Status ListShow(Sqlist &L);
/* 重置为空表——清空*/
Status ListClear(Sqlist &L){
    memset(L.data,0,sizeof(L.data));
    L.length=0;
    return OK;
}
/* 获取某个下标的元素的值——查询*/
Status GetElem(const Sqlist &L,const int &i,ElemType &e){
    if(L.length==0||i<1||i>L.length){
        printf("询问时:下标 %d,不合法。\n",i);
        return ERROR;
    }
    e=L.data[i-1];
    return OK;
}
/* 指定某个位置插入某元素——插入*/
Status ListInsert(Sqlist &L,int i,ElemType e){
    int k,len=L.length,temp;
    if(len>=MAXSIZE){
        printf("错误提醒:线性表已满\n\n");
        return ERROR;
    }else if(i<1||i>len+1){
        printf("错误提醒:
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值