2.1线性表的基本操作(数据结构C语言版)

本文介绍了如何利用C++实现线性表操作,包括初始化、打印、获取长度、创建、插入和查找元素。重点展示了如何通过union函数合并两个线性表LA和LB,将LB中LA不存在的数据插入LA,以形成集合A的并集A∪B。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、InitLISt(&L)
操作结果:构造一个空的线性表L

int initLISt(SqList *L)
{
    L->length=0;
    return 1;
}


2、printLIst(L)
操作结果:打印一个顺序表,方便测试操作是否正确

int printList(SqList L)
{
    if(L.length==0)
    {
        printf("链表为空\n");
        return 0;
    }
    int i;
    for(i=0;i<L.length;i++)
    {
        pritnf("data[%d]=%d\n",i,L.data[i]);
    }
    printf("\n");
    return 1;
}


3、getlength(L)
    操作结果:获取顺序表的长度
  

  int gelength(SqList L)
{
    return L.length;
}


4、createList(&L,int length)
    操作结果:创建一个顺序表,每个元素随机赋值

    int createList(SqList *L,int length)
{
    srand(time(0));
    int i;
    for(i=0;i<length;i++)
    {
        L->data[i]=rand()%100;
        L->length++;
    }
    return 1;
}


5、insertList(&L,int pos,ElemType elem)
    操作结果:在指定位置处插入一个新元素
  

  intsertLIst(SqList *L,int pos,ElenType elem)
{
    int i;
    if(pos<1||pos>L->length)
    {
        printf("插入的位置有误,无法插入数据\n");
        return 0;
    }
    for(i=L->length;i>pos-1;i--)
    {
        L->data[i+1]=L->data[i];
        
    }
    L->data[pos-1]=elem;
    L->length++;
    return 1;

}


6、locateElem(L,ElemType e)
    操作结果:查找在线性表中是否有指定元素
  

  int locateElem(L,ElemType e)
{
    for(int i=0;i<L.length;i++)
    {
        if(L.data[i]==e)
            {
                printf("在pos[%d]位置处,查找到了元素%d",i+1,e);
                return 1;
            }
    }
    return 0;
}

例题:2-1假设利⽤两个线性表LA和LB分别表示两个集合A和B,现要求⼀个新的集合A=A U B。这就要求对线性表作如下操
作:扩⼤线性表LA,将存在于线性表LB中⽽不存在于线性表LA中的数据元素插⼊到LA中去。只要从线性表LB中依
次取得每个数据元素,并依值在线性表LA中进⾏查访,若不存在,则插⼊之。

void union(List &La,List Lb)
{
    int La_len=Listlength(La);
    int Lb_len=Listlength(Lb);
    for(i=1;i<Lb_len;i++)
    {
        GetElem(Lb,i,e);
        if(!LocateElem(La,e,equal))
            ListInsert(La,++La_len;e);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值