走入顺序表,离开顺序表

顺序表就好像一栋楼房,有规定的层数MAXSIZE,elem[MAXSIZE]中住着一个房客,last始终指向最后一层。一个比喻说顺序表的插入和删除操作,就是房客的租房和退房。租房要考虑是否整栋楼都住满了人,租房的位置对与不对,最后是last有没有指向最后。就像插入的时候要注意表空间是不是满了,插入的位置的正确性,节点的移动。删除顺序表就像是房客退房,离开一个房客后,last要减一。此外,还要判断是否有该房客,就像顺序表要判断是否存在要要删除的元素。

代码如下:

#include "stdlib.h"
#include "stdio.h"
#define MIXSIZE 10
//定义一个线性表
typedef int elemtype;
typedef struct 
{
    elemtype elem[MIXSIZE];
    int last;
    
}SeqList;
int InsertList(SeqList *Lp,int i,elemtype x)
{
    
    int j;
    if(Lp->last==MIXSIZE-1)//表是否是满的
    {
        printf("表满");
        return(-1);
    }
    if(i<1||i>Lp->last+2)//位置的正确性
    {
        printf("位置错");
        return (0);
    }
    for(j=Lp->last;j>=i-1;j--)//节点的向下移动
        Lp->elem[j+1]=Lp->elem[j];
    Lp->elem[i-1]=x;
    Lp->last++;
    return (1);
}
int DeleteList(SeqList *Lp,int i)
{
    int j;
    if(i<1||i>Lp->last+1)
    {
        printf("不存在第i个元素");//检查是否存在该元素
        return(0);
    }
    for(j=i;j<=Lp->last;j++)//节点向上移动
        Lp->elem[j-1]=Lp->elem[j];
    Lp->last--;
    return(1);
}
void main()
{
    int i;
    SeqList *Lp;
    Lp=(SeqList *)malloc(sizeof(SeqList));
    Lp->last=10;
    printf("输入元素:");
    scanf("%d",&i);
    InsertList(Lp,5,7);
    for(i = 0;i < MIXSIZE;i++) {
        printf("%d\n",Lp->elem[i]);
    }
    printf("插入成功\n");
    DeleteList(Lp,4);
    for(i = 0;i < MIXSIZE;i++) {
        printf("%d\n",Lp->elem[i]);
    }
    printf("删除成功\n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值