线性表的建立,查找,插入,删除

1.建立空的链表(初始化)

1 List MakeEmpty(){
2     List PtrL;
3     PtrL = (List)malloc(sizeof(struct LNode));
4     PtrL->Last = -1;  //Last为0表示有一个元素放在第一个位置
5     return PtrL;  //把结构的指针返回
6 }    //创建并返回一个空的线性表;

2.查找(find)

1 int Find( List L, ElementType X ){
2     int i = 0;
3     while (i <= PtrL->Last && PtrL->Data[i] != X){
4         i++;
5     }
6     if (i >PtrL->Last)    return -1;
7     else return i;    //找到后返回储存位置
8 }

3.插入(在第i个位置插入值为X的元素)

先移动,再插入。

从后往前挪动。

void Insert( List L, ElementType X, int i){ 
    int j;
    if (PtrL->Last == MAXSIZE-1)
        printf("表满");
        return 0;
    if (i<1 || PtrL->Last+2)
        printf("位置不合法");
        teturn 0;
    for (j=PtrL->Last; j>=i-1; j--)
        PtrL->Data[j+1] = PtrL->Data[j];
    PtrL->Data[i-1] = X;    //新元素插入
    PtrL->Last++;    //Last仍指向最后元素
    reutrn 0;
}

4.删除(删除表的第i个位置上的元素)

把i之后的元素往前挪

void Delete( List L, int i ){
    int j;
    if (i<1 || i>PtrL->Last+1)
        printf("不存在第%d个元素", i);
        return 0;
    for (j=i; j<=PtrL->Last; j++)
        PtrL->Data[j-1] = PtrL->Data[j];
    PtrL->Last--;    //Last仍指向最后元素
    return 0;
}

 

猜你喜欢

转载自www.cnblogs.com/zhengxin909/p/12451592.html