28.顺序线性表-顺序栈-顺序队列

2018-09-11  本文已影响11人  aofeilin
====================》==========顺序==========》====================》
Status insertList(SqList *L,int i,int data){
    int k;
    //判断L的长度不要超过maxsize
    if (L->length == MAXSIZE){
        return ERROR;
    }
    if (i<1 || i>L->length +1) {
        return  ERROR;
    }
    if (i <= L->length){
        for (k = L->length-1;k>i-1; k--) {
            L->data[k+1] = L->data[k];
        }
    }
    L->data[i-1] = data;
    L->length ++;
    return OK;
}
//删除L的第i个数据元素
Status deleteList (SqList* L,int i,int *data){
    int k;
    if (L->length == 0) {
        return ERROR;
    }
    if (i < 1 ||i > L->length) {
        return ERROR;
    }
    *data = L->data[i-1];
    if (i <= L->length) {
        for (k = i; k < L->length;k++) {
            L->data[k-1] = L->data[k];
        }
    }
    return OK;
}

====================》========栈顺序============》====================》
/* 插入元素e为新的栈顶元素 */
Status Push(SqStack *S,SElemType e){
    if (S->top == MAXSIZE -1) {
        return ERROR;
    }
    S->top++;
    printf("%d",S->top);
    S->data[S->top] = e;
    return OK;
}

/* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */
//删除
Status Pop(SqStack *S,SElemType *e){
    if (S->top == -1) {
        return ERROR;
    }
    *e=S->data[S->top];
    S->top--;
    return OK;
}
====================》=========队列顺序==========》====================》

/* 若队列未满,则插入元素e为Q新的队尾元素 */
Status EnQueue(SqQueue *Q,QElemType e)
{
    if ((Q->rear+1)%MAXSIZE == Q->front)    /* 队列满的判断 */
        return ERROR;
    Q->data[Q->rear]=e;            /* 将元素e赋值给队尾 */
    Q->rear=(Q->rear+1)%MAXSIZE;/* rear指针向后移一位置, */
    /* 若到最后则转到数组头部 */
    return  OK;
}

/* 若队列不空,则删除Q中队头元素,用e返回其值 */
Status DeQueue(SqQueue *Q,QElemType *e)
{
    if (Q->front == Q->rear)            /* 队列空的判断 */
        return ERROR;
    *e=Q->data[Q->front];                /* 将队头元素赋值给e */
    Q->front=(Q->front+1)%MAXSIZE;    /* front指针向后移一位置, */
    /* 若到最后则转到数组头部 */
    return  OK;
}
上一篇下一篇

猜你喜欢

热点阅读