ios队列 ios实现简易队列
zyw658000 人气:0满足一些特殊需求
接口部分(队列支持需求)
#import <Foundation/Foundation.h> @interface XMQueue : NSObject ///队列追加 - (void)add:(id) obj; ///队列取出 - (id)next; ///返回队列最前端,不删除队列内元素 - (id)first; ///队列内是否还有元素 - (BOOL) isEmpty; ///队列转array - (NSArray *) arrayCopy; @end
实现方法
#import "XMQueue.h" @interface XMQueue() @property NSMutableArray *array; @property NSInteger currentIndex; @end @implementation XMQueue - (instancetype)init { self = [super init]; if (self) { self.array = [[NSMutableArray alloc] initWithCapacity:32]; } return self; } - (void)add:(id) obj{ if (self.currentIndex >= self.array.count-1) { NSMutableArray *newArray = [[NSMutableArray alloc] initWithCapacity:self.array.count*2]; for (id obj in self.array) { [newArray addObject:obj]; } self.array = newArray; } [self.array addObject:obj]; } - (id)next{ if (![self isEmpty]) { id obj = [self.array objectAtIndex:0]; [self.array removeObjectAtIndex:0]; return obj; }else{ return @"Empty"; } } - (id)first{ if (![self isEmpty]) { return self.array[0]; }else{ return @"Empty"; } } - (BOOL) isEmpty{ return self.array.count == 0; } @end
测试
XMQueue *queue = [[XMQueue alloc] init]; for (int i = 0; i < 5; i++) { [queue add:[NSNumber numberWithInt:i]]; } for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); } printf("\n"); [queue add:[queue next]]; for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); } printf("\n"); [queue add:[queue next]]; for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); } printf("\n"); [queue add:[queue next]]; for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); } printf("\n"); [queue add:[queue next]]; for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); } printf("\n"); [queue add:[queue next]]; for (NSNumber *number in [queue arrayCopy]) { printf("%d,",[number intValue]); }
结果
加载全部内容