线性表的数组实现方式

#include<cstdio>
#include<cstdlib>
typedef int Position;//表示位置的数据类型
typedef int ElementType;//表示顺序表的数据类型
typedef struct LNode LNode,*List;
#define MAXSIZE 100
struct LNode{
    ElementType data[MAXSIZE];
    Position last;//相当于一个尾指针
};
//生成一个顺序表
List makeEmpty()
{
    List ptrL;
    ptrL=(List)malloc(sizeof(LNode));//为指向结构菩提的指针分配存储空间
    ptrL->last=-1;//last为指针
    return ptrL;
}

//查找
#define ERROR -1
Position Find(List l,ElementType x)
{
    Position i;
    for(i=0;i<=l->last;++i)
    {
        if(l->data[i]==x)
            break;
    }
    if(i>l->last)
        return ERROR;
    else
       return i;
}
//在p之前插入一个新的元素
bool insert(List l,ElementType x,Position p)
{
    //判断是否能插入
    if(p>l->last+1)
    {
        printf("位置不合法/n");
        return false;
    }
    if(l->last==MAXSIZE-1)
    {
        printf("表已满");
        return false;
    }
   for(Position i=l->last;i>=p;--i)
     l->data[i+1]=l->data[i];
   l->data[p]=x;
   ++l->last;
   return true;
}
bool Delete( List L, Position P )
{ /* 从L中删除指定位置P的元素 */
    Position i;

    if( P<0 || P>L->last ) { /* 检查空表及删除位置的合法性 */
        printf("位置%d不存在元素", P );
        return false;
    }
    for( i=P+1; i<=L->last; i++ )
        L->data[i-1] = L->data[i]; /* 将位置P+1及以后的元素顺序向前移动 */
    L->last--; /* Last仍指向最后元素 */
    return true;
}
int main()
{
    List list1=makeEmpty();//这个指针指向了一个结构体
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值