ios實(shí)現(xiàn)簡易隊(duì)列
本文實(shí)例為大家分享了ios實(shí)現(xiàn)簡易隊(duì)列的具體代碼,供大家參考,具體內(nèi)容如下
滿足一些特殊需求
接口部分(隊(duì)列支持需求)
#import <Foundation/Foundation.h> @interface XMQueue : NSObject ///隊(duì)列追加 - (void)add:(id) obj; ///隊(duì)列取出 - (id)next; ///返回隊(duì)列最前端,不刪除隊(duì)列內(nèi)元素 - (id)first; ///隊(duì)列內(nèi)是否還有元素 - (BOOL) isEmpty; ///隊(duì)列轉(zhuǎn)array - (NSArray *) arrayCopy; @end
實(shí)現(xiàn)方法
#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]);
}
結(jié)果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS應(yīng)用程序之間的幾種跳轉(zhuǎn)情況詳解
這篇文章給大家詳細(xì)介紹了iOS應(yīng)用程序之間跳轉(zhuǎn)的幾種情況,包括跳轉(zhuǎn)到另一個(gè)程序的主界面、跳轉(zhuǎn)到另一個(gè)程序的指定界面以及如何從目標(biāo)程序的非主頁界面回到當(dāng)前(跳轉(zhuǎn)前)程序呢?有需要的朋友們可以下面來一起看看。2016-09-09
詳解iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法
這篇文章主要介紹了iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法,AVAudioPlayer僅能播放本地文件而不能添加網(wǎng)絡(luò)源,實(shí)例代碼為Objective-C,需要的朋友可以參考下2016-03-03
iOS 本地視頻和網(wǎng)絡(luò)視頻流播放實(shí)例代碼
本篇文章主要介紹了iOS 本地視頻和網(wǎng)絡(luò)視頻流播放實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
iOS開發(fā)之如何通過PUT請求上傳數(shù)據(jù)
眾所周知一般的服務(wù)器上傳數(shù)據(jù)都是用POST請求,這樣通過AFNetworking的POST請求穩(wěn)穩(wěn)的,但是有一天遇到一個(gè)問題,服務(wù)器上傳數(shù)據(jù)用的是PUT請求,發(fā)現(xiàn)用AFNetworking并不是那么好用,下面這篇文章就來講一下如何通過PUT請求上傳數(shù)據(jù)。有需要的朋友們可以參考借鑒。2016-11-11
iOS調(diào)試Block引用對象無法被釋放的小技巧分享
這篇文章主要給大家分享介紹了關(guān)于iOS調(diào)試Block引用對象無法被釋放的小技巧,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
iOS 動(dòng)畫實(shí)戰(zhàn)之釣魚小游戲?qū)嵗a
最近小編做了一個(gè)釣魚小游戲,平時(shí)沒有做過,所以上手有點(diǎn)急躁,不過,最終還是實(shí)現(xiàn)了,下面小編給大家分享iOS 動(dòng)畫實(shí)戰(zhàn)之釣魚小游戲的實(shí)現(xiàn)思路,感興趣的朋友一起看看吧2018-02-02

