美文网首页
28.顺序线性表-顺序栈-顺序队列

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

作者: aofeilin | 来源:发表于2018-09-11 17:55 被阅读11次
    ====================》==========顺序==========》====================》
    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;
    }
    

    相关文章

      网友评论

          本文标题:28.顺序线性表-顺序栈-顺序队列

          本文链接:https://www.haomeiwen.com/subject/biougftx.html