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;
}