问题:链表,栈,队列(循环队列)判定满或者空的条件急求

问题:链表,栈,队列(循环队列)判定满或者空的条件急求,第1张

1、为空条件

链表:头结点指针域next==NULL

静态链表:数组最后一个元素值为0

循环链表:头结点的指针域指向它本身(循环查找时以p->next !=头结点作为遍历结束条件)

顺序存储时:top==-1

链式存储时:top==NULL

队列(队头出队、队尾入队)

①顺序存储

队列 front==rear

循环队列 front==rear

链式存储

链队列 front、rear均指向头结点

2、为满条件

单链表、循环链表:不存在

静态链表:根据数组长度来判断

顺序存储时:top==数组大小-1

链式存储时:不存在

队列

①顺序存储

队列 可能假溢出

循环队列 (rear+1)% QueueSize == front

②链式存储

链队列 不存在

#include<stdioh>

#include<iostream>

using namespace std;

#include<malloch>

typedef char ElemType;

typedef struct node

{

ElemType data;

struct node next;

} LinkStack;

void InitLinkStack (LinkStack & s)

{

s=(LinkStack )malloc(sizeof(LinkStack));

s->next=NULL;

}

int IsEmptyLinkStack (LinkStack s)

{

return (s->next==NULL);

}

void PushLinkStack(LinkStack &s , ElemType x)

{

LinkStack p;

p=(LinkStack)malloc(sizeof(LinkStack));

p->data=x;

p->next=s->next;

s->next=p;

}

int PopLinkStack (LinkStack & s, ElemType &x)

{

LinkStack p;

if(s->next==NULL)

return 0;

p=s->next;

x=p->data;

s->next=p->next;

free(p);

return 1;

}

int GetLinkStackTop (LinkStack s, ElemType &x)

{

if(s->next==NULL)

return 0;

x=s->next->data;

cout<<x;

/printf("%c",x);/

return 1;

}

int main()

{

LinkStack L;

char m[99];

int i=0;;

InitLinkStack(L);

gets(m);

while(m[i]!='#')

{

PushLinkStack(L,m[i]);

GetLinkStackTop(L,m[i]);

i++;

}

return 0;

}

请参考

以上就是关于问题:链表,栈,队列(循环队列)判定满或者空的条件急求全部的内容,包括:问题:链表,栈,队列(循环队列)判定满或者空的条件急求、如何判断栈满和栈空、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10213109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存