Week1 线性表的学习

线性表的实现


  • 顺序表存储

    – 定义的结构体如下

//定义一个线性链表的结构体
struct LNode{
    int data[100];
    int Last;
};
typedef struct LNode* List;
typedef struct LNode LNode;
  • 各方法的实现
//建立空的顺序表
List MakeEmpty(){
    List PtrL;
    PtrL = (List)malloc(sizeof(LNode));
    PtrL->Last=-1;
    return PtrL;
}
//对一个线性链表进行初始化
void IniList(List L){
    int n;
    scanf("%d",&n);
    while(n!=-1){
        L->data[++L->Last]=n;
        scanf("%d",&n);
    }
}
//将一个线性链表打印出来
void PrintList(List L){
    for (int i = 0; i < L->Last+1; ++i)
    {
        printf("%d\n", L->data[i]);
    }
}
//在线性表中寻找元素X若存在,返回其位置,如不存在,返回-1
int Find(int X, List L){
    int i;
    for (i = 0; i < L->Last+1; ++i)
    {
        if (L->data[i]==X)
        {
            return i;
        }

    }
    if(i>=L->Last+1)
        return -1;
}
//在线性表中第X位置上插入元素i
void Insert(int X, int i, List L){
    int temp1;
    int temp2;
    //先要判定这个表有没有满
    if (L->Last==MAXSIZE)
    {
        printf("线性表已满");
        return;
    }

    //检查位置是否合法
    if (i<0||i>L->Last)
    {
        return;
    }

    //
    for (int j = L->Last; j >= X; j--)
    {
        L->data[j+1]=L->data[j];
    }
    L->data[X]=i;
    L->Last++;
}
//返回线性表的长度
int Length(List L){
    return L->Last;
}
  • main 方法
int main(){
    List L;
    L=MakeEmpty();
    printf("---------初始化一个线性表---------\n");
    IniList(L);
    printf("---------打印这个线性表---------\n");
    PrintList(L);
    printf("---------返回线性表的长度---------\n");
    printf("%d\n", Length(L));
    printf("---------查找元素x是否存在--------\n");
    printf("%d\n",Find(3,L));
    printf("---------在线性表中第X位置上插入元素i--------\n");
    Insert(2,9,L);
    printf("---------打印插入元素后的线性表线性表---------\n");
    PrintList(L);
    printf("---------返回线性表的长度---------\n");
    printf("%d\n", Length(L));
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值