C语言中如何把两个栈实现一个队列?
伪码 入队: InQueue(elem): while (栈A不空) 栈Bpush(栈Apop); 栈Apush(elem); while (栈B不空) 栈Apush(栈Bpop); 出队 outQueue(): 栈Apop
a b c d顺序入栈,正确的出栈顺序,及怎样做?
DCBA,CDBA,CBDA,CBAD,BDCA,BCDA,BADC,BACD,ADCB,ACDB,ACBD,ABDC,ABCD因为栈是后进先出的如果D先出来只有一种可能就是DCBA如果压到C先弹出C再压D,得到CDBA同理其他结果
c语言赋值语句如何压栈?
方法很简单:你讲两个栈都传进去,类似于 : int pus(SeqStack1 *s, DataType* x1, SeqStack2 *s, DataType* x2)(SeqStack1是你的第一个栈,SeqStack2是第二个栈,DataType是你需要传进去的数据的类型),然后在这个函数里面先判断x1 ,x2是否为空,如果为空,则他对应的那个栈不需要压栈,如果不为空,则执行相应的压栈操作。 不明白继续追问!
用C语言的链表实现栈的基本操作,代码怎么写啊?哪位大神能提供完整代码啊?
定义一个push( 参数 进栈数据,链表顶端指针 )函数,负责进栈操作,返回一个指针,这个指针总是指向最新的链表节点。
{
malloc()申请内存块;
把进栈数据存放到内存块,把新内存块的next指向链表顶端指针;
return 新内存块指针;
}
定义一个get(参数 取数存放变量 ,链表顶端指针 )函数,负责取最近进栈的数据,返回取数后指向的下一个链表节点的地址。把取到的数赋给传入的取数存放变量。释放取数链表节点的内存。
{
取数存放变量=链表顶端指针对应节点的数据;
定义一个指针 z;
z=链表顶端指针->next;
释放链表顶端指针对应的内存;
return z;
}

