线性表的完善增删改查

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElementType;
typedef struct
{
    ElementType *data;
    int length;
}Sqlist;
int MAXSIZE = 20;


Status initlist(Sqlist *list);
Status Lengthlist(Sqlist list);
Status insertlist(Sqlist *list, ElementType x);
Status update(Sqlist *list, int index, ElementType x);
Status Printlist(Sqlist *list);
Status isfull(Sqlist *list);
Status delete(Sqlist *list, int index);
Status insert_index(Sqlist *list, int index, ElementType x);
void sort(Sqlist *list);
Status clearlist(Sqlist *list);
Status querylist(Sqlist list, int x);
int main(int argc, char **argv)
{
    int ret, i;
    Sqlist list;
    ret = initlist(&list);
    if(ret == ERROR)
    {
        return -1;
    }
    for(i = 0; i < 30; i++)
    {
        
        ret = insertlist(&list,i);
        if(ret == ERROR)
        {
            return -1;
        }
    }
    isfull(&list);
    update(&list, 5, 100);
    delete(&list, 5);
    sort(&list);
    insert_index(&list, 0, 1000);
    insert_index(&list, 6, 120);
    querylist(list, 1000);
    clearlist(&list);
    Printlist(&list);
    
    return 0;
}


Status initlist(Sqlist *list)
{
    list->length = 0;
    list->data = (ElementType*)malloc(MAXSIZE*sizeof(ElementType));
    if(list->data == NULL)
    {
        return ERROR;
    }
    return OK;
}


Status Lengthlist(Sqlist list)
{
    return list.length;
}


Status insertlist(Sqlist *list, ElementType x)
{
    if(ERROR == isfull(list))
    {
        return ERROR;
    }
    list->data[list->length] = x;
    list->length++;
}


Status update(Sqlist *list, int index, ElementType x)
{
    if( index < 0||index >= Lengthlist(*list))
    {
        return ERROR;
    }
    list->data[index] = x;


}


Status Printlist(Sqlist *list)
{
    int i;
    for(i = 0; i < Lengthlist(*list); i++)
    {
        printf("%d\n", list->data[i]);
    }
}


//排序 从小到大
void sort(Sqlist *list)
{
    int i,j;
    for( i = 0; i < Lengthlist(*list) - 1; i++)
        for(j = 0; j < Lengthlist(*list) - 1 - i;j++)
        {
            if(list->data[i] > list->data[i + 1])
            {
                int t = list->data[i];
                list->data[i] = list->data[i + 1];
                list->data[i + 1] = t;
            }
        }
    
}


int ADD = 5;


Status isfull(Sqlist *list)
//排序 从小到大
{
    
    if(list->length == MAXSIZE)
    {
    list->data = realloc(list->data, (ADD + MAXSIZE)*sizeof(ElementType));
    if(NULL == list->data)
    {
        return -1;
    }
    MAXSIZE += ADD;
    }
}


Status delete(Sqlist *list, int index)
{
    int i;
    if(index >= Lengthlist(*list))
    {


        return ERROR;
    }
    for(i = index; i < Lengthlist(*list)-1; i++)
    {
        list->data[i] = list->data[i + 1];
    }
    list->length--;
}


Status insert_index(Sqlist *list, int index, ElementType x)
{
    int i;
    if(index >= Lengthlist(*list))
    {
        return ERROR;
    }
    for(i = Lengthlist(*list) - 1; i >= index; i--)
    {
        list->data[i + 1] = list->data[i];
    }
    list->data[index] = x;
    list->length++;
    return OK;
}


Status clearlist(Sqlist *list)
{
    int i;
    memset(list->data, 0, Lengthlist(*list)*sizeof(ElementType));
    list->length = 0;
    free(list->data);
    list->data = NULL;
    MAXSIZE = 20;
    return OK;
        
}




Status querylist(Sqlist list, ElementType  x)
{
    int count = 0;
    int i;
    for(i = 0; i < Lengthlist(list); i++)
    {
        if(list.data[i] == x)
        {
            printf("%d\n", i);
            count++;
        }
    }
    printf("together = %d,daying = %d", count, x);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值