本文實例為大家分享了ios實現簡易隊列的具體代碼,供大家參考,具體內容如下
滿足一些特殊需求
接口部分(隊列支持需求)
#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]); }
結果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答