顺序表基本操作

这段时间状态非常不好,乱七八糟的事情搞得心烦意乱,得开始静下心了调整状态了,然而大心课被点名了,有点自闭

#include <stdio.h>
#define MaxSize 100 
typedef int ElemType;
typedef struct
{
    ElemType elem[MaxSize];
    int last;//顺序表最后一个元素的位置 
}SqList;

void InitList(SqList *L)
{
    L->last = -1;
}

int isEmpty(SqList *L)
{
    if (L->last==-1) return 1;
    else return 0;
}

int CreateList(SqList *L, ElemType a[], int n)
{
    if (n>MaxSize) return 0;
    for (int i = 0; i < n; i++)
        L->elem[i] = a[i];
    L->last = n-1;
}

int Get(SqList *L, int n, ElemType *ptr)//找到序号为n的元素给ptr 
{
    if (n<1||n>L->last+1) return 0;
    *ptr = L->elem[n-1];
    return 1;
}

int Locate(SqList *L, ElemType x)//找到x在顺序表中的位置 
{
    for (int i = 0; i <= L->last; i++)
        if (L->elem[i]==x) return i+1;
    return 0;
}

void printList(SqList *L)
{
    for (int i = 0; i <= L->last; i++)
        printf("%d ", L->elem[i]);
}

int Insert(SqList *L,int n,ElemType x) //注意判断顺序表是否满,插入位置是否正确,然后再进行操作
{
    if (L->last+1>=MaxSize) return 0;
    else if (n<1||n>L->last+2) return 0;
    for (int i = L->last+1; i >= n; i--)
        L->elem[i] = L->elem[i-1];
    L->elem[n-1] = x;
    L->last++;
    return 1;
}

int Delete(SqList *L, int n) // 注意判断条件,参考insert
{
    if (n<1||n>L->last+1) return 0;
    for (int i = n-1; i < L->last; i++)
        L->elem[i] = L->elem[i+1];
    L->last--;
    return 1;
}
int main()
{
    SqList L;
    ElemType a[10];
    for (int i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    InitList(&L);
    CreateList(&L, a, 10);
    printList(&L);
    
    Insert(&L, 5, 11);
    printf("\n");
    printList(&L);
    
    Delete(&L, 8);
    printf("\n");
    printList(&L);
    
    return 0;
}
posted @ 2019-03-29 21:20  sparkyen  阅读(202)  评论(0编辑  收藏  举报