栈
基本操作
(1)判断栈空
(2)判断栈满
(3)进栈
(4)出栈
判断栈空
操作:
s->top = = -1;
当栈顶指向-1时说明该栈为空。
判断栈满
操作:
`s->top == MAXEN -1 ;
当栈顶为栈长减一时说明栈为满
进栈
s->top++;
s->data [ s->top ] = x;
出栈
操作:
*x = s->data[s->top];
队列
基本操作
(1)判断队空
(2)进队
(3)出队
(4)取队头元素
判断队空
操作:
front = rear = -1;
当队头等于队尾等于-1时队列为空;
入队
操作:
Q-> rear = (Q->rear +1 )%MAXLEN;
Q->data[Q - > rear] = x;
出队
操作:
Q->front=(Q->front+1)%MAXSIZE;
*x=Q->data[Q->front] ;
取队头元素
*x=Q->data [ (Q->front+1)%MAXSIZE];
二叉树
定义:二叉树(Binary Tree)是有n (n≥0)个结点的有限集合:
(1)该集合或者为空(n=O);
(2)或者由一个根结点及两个不相交的分别称为左子树和右子树组成的非空树;
(3)左子树和右子树同样又都是二叉树。
遍历操作
(1)先序遍历
(2)中序遍历
(3)后序遍历
先序遍历
(1)访问根结点;
(2)先序遍历根结点的左子树;
(3)先序遍历根结点的右子树。
先序递归操作:
void PreOrder (BT *T){
if (T==NULL)return;else
{
printf ("%c",T->data) ;
Preorder (T->lchild);
PreOrder (T->rchild);}
}
中序遍历
(1)中序遍历根结点的左子树;
(2)访问根结点;
(3)中序遍历根结点的右子树。
中序递归操作:
void InOrder (BT *T)
{
if(T==NULL)return;
else
{
InOrder (T->lchild);
printf ( "%c",T->data) ;
Inorder (T->rchild);
}
}
后序遍历
(1)后序遍历根结点的左子树;
(2)后序遍历根结点的右子树;
(3)访问根结点。
void PostOrder (BT *T){
if(T-=NULL) return;
else
{
PostOrder (T->lchild);
Postorder (T->rchild);
printf ("%c",,T->data) ;
}
}