本文共 1026 字,大约阅读时间需要 3 分钟。
在 Objective-C 中,使用两个堆栈可以模拟队列的先进先出(FIFO)特性。这种方法通过将入队操作添加到第一个堆栈,出队操作从第二个堆栈顶部取出,来实现队列的功能。
以下是实现这个算法的完整代码示例:
#import@interface QueueUsingStacks : NSObject @property (nonatomic, strong) NSMutableArray *queue; @end @implementation QueueUsingStacks - (void)enqueue:(id)element { [self.queue addObject:element]; } - (id)dequeue { return [self.queue removeFirstObject]; } - (void)exampleUsage { QueueUsingStacks *queue = [[QueueUsingStacks alloc] init]; [queue enqueue:@"A"]; [queue enqueue:@"B"]; [queue enqueue:@"C"]; id element = [queue dequeue]; // 输出 "A" element = [queue dequeue]; // 输出 "B" element = [queue dequeue]; // 输出 "C" } @end
self.queue)来添加元素。每次调用 enqueue 方法时,都将元素添加到堆栈的顶部。dequeue 方法时,都从堆栈中取出最古老的元素(即堆栈顶部的元素)。这种方法通过两个堆栈的双重管理,有效地模拟了队列的行为,同时避免了直接在队列头部操作可能带来的性能问题。
如果需要更高效的实现,或者对队列的其他操作(如peek、size等)进行支持,可以进一步扩展代码逻辑。
转载地址:http://idifk.baihongyu.com/