线性表(顺序表)

#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 100

///定义结构体
typedef int elemtype;
typedef struct
{
    elemtype data[MAXSIZE];
    int length;
}SqList;

///初始化顺序表
SqList *InitList(SqList *L)
{
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
    return L;
}

///插入元素
int InsItem(SqList *L,int pos,int item)
{
    int i;
    if(pos<1||pos>L->length+1)
    {
        printf("Position is not correct!\n");
        return 0;
    }
    else if(pos>=MAXSIZE)
    {
        printf("The list is overflow.\n");
        return 0;
    }
    else
    {
        for(i=L->length-1;i>=pos-1;i--)
        {
            L->data[i+1]=L->data[i];
        }
        L->data[pos-1]=item;
        L->length++;
        return 1;
    }
}

///删除元素1(根据位置)
int DelItem1(SqList *L,int pos)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    else if(pos<1||pos>L->length)
    {
        printf("Position is not correct!\n");
    }
    else
    {
        for(i=pos-1;i<L->length-1;i++)
        {
            L->data[i]=L->data[i+1];
        }
        L->length--;
        return 1;
    }
}

///删除操作2(根据值,只删除一个)
int DelItem2(SqList *L,int item)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    else
    {
        for(i=0;i<L->length;i++)
        {
            if(L->data[i]==item)
            {
                DelItem1(L,i+1);
                break;
            }
        }
        return 1;
    }
}

///删除操作3(根据值,删除多个相同的值)
int DelItem3(SqList *L,int item)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
    }
    else
    {
        for(i=0;i<L->length;i++)
        {
            if(L->data[i]==item)
            {
                DelItem1(L,i+1);  //与2的区别在于少了break;
            }
        }
        return 1;
    }
}

///定位查找1(返回第一个位置)
int LocItem1(SqList *L,int item)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    else
    {
        for(i=0;i<L->length;i++)
        {
            if(L->data[i]==item)
            {
                return i+1;
            }
        }
    }
}

///定位查找2(打印多个位置)
int LocItem2(SqList *L,int item)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    else
    {
        for(i=0;i<L->length;i++)
        {
            if(L->data[i]==item)
            {
                printf("%d ",i+1);
            }
        }
    }
}


///置空顺序表
int EmptyList(SqList *L)
{
    L->length=0;
    return 1;
}

///判空
int ListEmpty(SqList *L)
{
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    else
    {
        printf("The list is no empty!\n");
        return 1;
    }
}

///逆置顺序表
SqList *Inverse(SqList *L)
{
    int i,temp;
    for(i=0;i<L->length/2;i++)
    {
        temp=L->data[i];
        L->data[i]=L->data[L->length-1-i];
        L->data[L->length-1-i]=temp;
    }
    return L;
}

///顺序表排序(冒泡排序/升序)
SqList *Sort(SqList *L)
{
    ///同数组排序同理
    int i,j,temp;
    for(i=0;i<L->length;i++)
    {
        for(j=0;j<L->length;j++)
        {
            if(L->data[i]<L->data[j])
            {
                temp=L->data[i];
                L->data[i]=L->data[j];
                L->data[j]=temp;
            }
        }
    }
}

///遍历顺序表
int ListTraverse(SqList *L)
{
    int i;
    if(L->length==0)
    {
        printf("The list is empty!\n");
        return 0;
    }
    for(i=0;i<L->length;i++)
    {
        printf("%d ",L->data[i]);
    }
    printf("\n");
    return i;
}

int main()
{
    SqList *L;
    L=(SqList *)malloc(sizeof(SqList));
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值