1.顺序表的输出:
2.单链表的输出:
3.双链表的输出:
4.循环单链表的输出:
5.循环双链表的输出:
6.顺序栈的出栈:
7.链栈的出栈:
void DispList(SqList *L) //输出顺序表
{
int i;
if (ListEmpty(L)) return; //为空值,直接返回
for (i = 0; i < L -> length; i++) //遍历顺序表的所有元素
printf("%c ", L -> data[i]); //用指针指向这些元素输出
printf("\n");
}
2.单链表的输出:
void DispList(LinkList *L) //输出线性表
{
LinkList *p = L->next;
while (p != NULL)
{
printf("%c ", p->data);
p = p -> next;
}
printf("\n");
}
3.双链表的输出:
void DispList(DLinkList *L) //输出线性表
{
DLinkList *p = L->next;
while (p != NULL)
{
printf("%c ", p->data);
p = p -> next;
}
printf("\n");
}
4.循环单链表的输出:
void DispList(LinkList *L) //输出线性表
{
LinkList *p = L -> next;
while (p != L)
{
printf("%c ", p->data);
p = p -> next;
}
printf("\n");
}
5.循环双链表的输出:
void DispList(DLinkList *L) //输出线性表
{
DLinkList *p = L -> next;
while (p != L)
{
printf("%c ", p -> data);
p = p -> next;
}
printf("\n");
}
6.顺序栈的出栈:
bool Pop(SqStack *&s,ElemType &e) //出栈
{ if (s->top==-1) //栈为空的情况,即栈下溢出
return false;
e=s->data[s->top]; //取栈顶指针元素的元素
s->top--; //栈顶指针减1
return true;
}
7.链栈的出栈:
bool Pop(LiStack *&s,ElemType &e) //出栈
{ LiStack *p;
if (s->next==NULL) //栈空的情况
return false;
p=s->next; //p指向开始节点
e=p->data;
s->next=p->next; //删除*p节点
free(p); //释放*p节点
return true;
}
bool deQueue(SqQueue *&q,ElemType &e) //出队
{
if (q->front==q->rear) //队空下溢出
return false;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front];
return true;
}
9.链队的出队:
bool deQueue(LiQueue *&q,ElemType &e) //出队
{ QNode *t;
if (q->rear==NULL) //队列为空
return false;
t=q->front; //t指向第一个数据节点
if (q->front==q->rear) //队列中只有一个节点时
q->front=q->rear=NULL;
else //队列中有多个节点时
q->front=q->front->next;
e=t->data;
free(t);
return true;
}