哪位大神能给出2、3题的详细解答啊。数据结构,栈和队列 50
1个回答
展开全部
2.因为你的问题形容的比较模糊,所以补充信息给出你的答案。
首先定义队列一定要说是单向循环队列,还是双向循环队列,你这里没有指出就默认是单向循环。
2.1何时队列满。
当新的结点进入队列的时候,那么当前的length+1当你的length=MAXlength;是代表该队列是满。
2.2入队列,根据队列的定义如果入队列只能在尾巴处加入。
新节点是node;
node->next=rear->next;
rear->next=node;
2.3出队列,根据队列的定义如果出队列只能在头结点出。
temp=rear->next;
rear->next=rear->next->next;
free(temp);
3.首先假设两个栈是等长的,那么队列慢的判断条件的是两个栈中的结点和,等于一个栈的容量的时候,就代表队列满了!当两个栈不等长的时候,两个栈中的结点和等于较小的栈的长度队列就满了。
以较小的栈作为队列存放栈,长的栈作为辅助栈。
3.1出队列从栈顶去除结点即可。
3.2入队列,将短栈内的元素,一次入长栈,然后将新元素,压入短栈,再将长栈中的元素一次入短栈。即完成了入栈。
首先定义队列一定要说是单向循环队列,还是双向循环队列,你这里没有指出就默认是单向循环。
2.1何时队列满。
当新的结点进入队列的时候,那么当前的length+1当你的length=MAXlength;是代表该队列是满。
2.2入队列,根据队列的定义如果入队列只能在尾巴处加入。
新节点是node;
node->next=rear->next;
rear->next=node;
2.3出队列,根据队列的定义如果出队列只能在头结点出。
temp=rear->next;
rear->next=rear->next->next;
free(temp);
3.首先假设两个栈是等长的,那么队列慢的判断条件的是两个栈中的结点和,等于一个栈的容量的时候,就代表队列满了!当两个栈不等长的时候,两个栈中的结点和等于较小的栈的长度队列就满了。
以较小的栈作为队列存放栈,长的栈作为辅助栈。
3.1出队列从栈顶去除结点即可。
3.2入队列,将短栈内的元素,一次入长栈,然后将新元素,压入短栈,再将长栈中的元素一次入短栈。即完成了入栈。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询