顺序表

#include <stdio.h>
#include <stdlib.h>
//创建结构体变量
typedef struct {
    int* data;
    int length;
}List;
//创建顺序表
void Init(List* p){
    p->length = 0;
    p->data = (int*)malloc(sizeof(int)*(p->length));
}
//求表长
int Length(List *p){
    return p->length;
}
//插入
int Insert(List* p, int k, int x){
    int i;
    if(p->length){
        if(k > 0 && k <= p->length) {
            for (i = p->length; i >= k; i--)
                p->data[i] = p->data[i - 1];
            p->data[k-1] = x;
            p->length++;
            return 1;
        }
        else
            return -1;
    }
    else{
        if(k == 1) {
            p->data[0] = x;
            p->length++;
            return 1;
        }
        else
            return -1;
    }
}
//删除
int Delet(List* p, int k, int* px) {
    int i;
    if (p->length) {
        if (k > 0 && k <= p->length) {
            *px = p->data[k - 1];
            for (i = k; i < p->length; i++)
                p->data[i - 1] = p->data[i];
            p->length--;
            return 1;
        }
        else
            return -1;
        }
    else
        return -1;
}
//按值查找
int Find_1(List* p, int x){
    int i,flag=-1;
    if(p->length){
        for(i=0;i<p->length;i++)
            if(p->data[i] == x)
                flag = i+1;
        return flag;
    }
    else
        return flag;
}
//按位查找
int Find_2(List* p, int k){
    if(p->length){
        if(k>0 && k<=p->length)
            return p->data[k-1];
        else
            return -1;
    }
    else
        return -1;
}
//输出顺序表
void Print(List* p){
    int i;
    for(i=0;i<p->length;i++)
        printf("%d\n",p->data[i]);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容