栈的类型定义与基本操
作
Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】
循环队链的出队
bool Dequeue( CSQueue &q, QElemType &e ) {
int front;
if( == 0 )
return false;
front = ( + 1 - + MAXQSIZE ) % MAXQSIZE;
e = [ front ];
--;
return true;
}
循环队链的入队
bool Enqueue( CSQueue &q, QElemType e )
{
if( == MAXQSIZE )
return false;
= ( + 1 ) % MAXQSIZE;
[ ] = e;
++;
return true;
}
链队的入队
void Enqueue( LQueue &q, QElemType e )
{
LQueuePtr p;
p = new QNode;
p->data = e;
p->next = >next;
>next = p;
= p;
}
链队的出队
bool Dequeue( LQueue &q, QElemType &e )
{
LQueuePtr p;
if( >next == )
return false;
p = >next;
e = p->next->data;
>next = p->next;
delete p;
return true;
}
顺序栈的类型定义与基本操作:
const StackInitSize=100;
const StackInc=10;
struct SStack {
SElemType *base,*top; isited=false;
for(i=1;i<=;i++)
if(![i].visited)
{
visit[i].data);
[i].visited=true;
Enqueue(q,i);
while(Dequeue(q,j))
for(p=[j].firstarc;p;p=p->nextarc)
{
k=p->adjvex;
if(![k].visited)
{
visit(G>Vexs[k].data);
[k].visited=true;
Enqueue;
}
}
}
}
深度优先搜索遍历
void DFS(ALGraph &G, int i, void visit(VexType)) { int j;
Arcptr p;
visit[i].data);
[i].visited=true;
for(p=[i].firstarc ;p; p=p->nextarc)
{
J=p->adjvex;
if(![j].visited)
DFS(G,j,visit);
}
}。