From 8d2ceaeea484d96656fde31b106310698c7218d0 Mon Sep 17 00:00:00 2001 From: Jieson Date: Fri, 22 Jul 2016 15:24:13 +0800 Subject: [PATCH] adds the capacity queue --- DKQueue.m | 2 ++ DWCapacityQueue.h | 22 ++++++++++++++++++++++ DWCapacityQueue.m | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 DWCapacityQueue.h create mode 100644 DWCapacityQueue.m diff --git a/DKQueue.m b/DKQueue.m index ac9e314..60f67ee 100755 --- a/DKQueue.m +++ b/DKQueue.m @@ -18,6 +18,8 @@ -(id)init return self; } + + -(id)dequeue { if ([array count] > 0) { diff --git a/DWCapacityQueue.h b/DWCapacityQueue.h new file mode 100644 index 0000000..a1b2f95 --- /dev/null +++ b/DWCapacityQueue.h @@ -0,0 +1,22 @@ +// +// DWCapacityQueue.h +// drawme +// +// Created by WuJieson on 16/7/22. +// Copyright © 2016年 Ge. All rights reserved. +// + +#import +#import "DKQueue.h" + +@interface DWCapacityQueue : DKQueue + +@property (nonatomic, assign) NSUInteger capacity; + +-(instancetype)initWithCapacity:(NSInteger)numItems; + +// Remove all elements +-(void)enqueueElementsFromArray:(NSArray*)arr; +-(void)enqueueElementsFromQueue:(DKQueue*)queue; + +@end diff --git a/DWCapacityQueue.m b/DWCapacityQueue.m new file mode 100644 index 0000000..e24599b --- /dev/null +++ b/DWCapacityQueue.m @@ -0,0 +1,47 @@ +// +// DWCapacityQueue.m +// drawme +// +// Created by WuJieson on 16/7/22. +// Copyright © 2016年 Ge. All rights reserved. +// + +#import "DWCapacityQueue.h" + +@implementation DWCapacityQueue + +-(instancetype)initWithCapacity:(NSInteger)numItems +{ + self = [super init]; + if (self) { + _capacity = numItems; + array = [NSMutableArray arrayWithCapacity:numItems]; + } + return self; +} + +-(void)enqueue:(id)element +{ + if ([array count] == _capacity) { + [self dequeue]; + } + [array addObject:element]; +} + +-(void)enqueueElementsFromArray:(NSArray*)arr +{ + [array addObjectsFromArray:arr]; + while ([array count] > _capacity) { + [self dequeue]; + } +} + +-(void)enqueueElementsFromQueue:(DKQueue*)queue +{ + while (![queue isEmpty]) { + [self enqueue:[queue dequeue]]; + } +} + + +@end