您的位置:首页 > 理论基础 > 数据结构算法

数据结构:栈和队列

2015-06-19 10:40 288 查看
栈
栈的顺序存储
1.栈满的条件s->top==MAXSIZE-1;
链栈
1.入栈
p=(slStacktype *)malloc(sizeof(slStacktype))
p->data=x;
p->next=top->next;
top->next=p;
2.出栈
if(top->next==NULL) return NULL;
p=top->next;
top->next=p->next;
x=p->data;
free(P);
return x;
3.多个链栈
top[0],top[1]....分别是M个链栈的栈顶指针,操作时只需确定链栈号i,然后以top[i] 为栈定指针进行栈操作。

队列
空队:front=rear=-1;
入队:
sq->rear++;
sq->data[sq->rear]=x;
出队:
sq->front++;
x=sq->data[sq->front];

循环队列
入队:
if((q->rear+1)%MAXSIZE==Q->front){
print("队满");
return FALSE;
}
else{
q->rear=(q->rear+1)%MAXSIZE;
Q->data[q->rear]=x;
return TRUE;
}

出队
if(q->front==q->rear){
printf("空队");
return FALSE;
}
else{
q->front=(q->front+1)%MAXSIZE;
X=q->data[q->front];
return TRUE;
}

链队

入队:
p=malloc(sizeof(QNnode));
p->data=x;
p->next=null;
q->rear->next=p;
q->rear=p;
出队:
p=q->front->next;
q->front->next=p->next;
x=p->data;
free(p);
if(q->front->next==NULL) q->rear=q->front;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: