#import "GSTDViewController.h"
#import "AllViewController.h"
@interface GSTDViewController ()
@end
@implementation GSTDViewController
@synthesize myTextField;
- (void)viewDidLoad
{
[super viewDidLoad];
head=0;tail=0; //初始化为空队列。
counta=0;
}
#pragma mark=======显示所有的方法。============
- (IBAction)showAll:(id)sender {
NSMutableString *tempStr=[[NSMutableString alloc]init];
[tempStr appendFormat:@"head==%d,,tail===%d\n",head,tail];
//输出队列的元素。
printf("\n下面是整个表的元素显示:\n");
for (int i=head; i<tail; ++i) {
printf("a[%d]=%d\n",i%MAX1,a[i%MAX1]);
[tempStr appendFormat:@" a[%d]=%d ,",i%MAX1,a[i%MAX1]];
}
printf("head==%d,,tail===%d",head,tail);
AllViewController *all=[[AllViewController alloc]initWithNibName:@"AllViewController" bundle:nil];
[self presentViewController:all animated:YES completion:^{
all.myTextView.text=tempStr;
}];
}
#pragma mark-=====判断队列是否为空的方法======
- (int)isEmpty:(id)sender {
if (tail-head==0) {
self.label_IsEmpty.text=@"空";
return 1;
}
self.label_IsEmpty.text=@"不为空";
return 0;
}
#pragma mark======判断队列的长度的方法。======
- (int)length:(id)sender {
self.label_Length.text=[NSString stringWithFormat:@"%d",tail-head];
return tail-head;
}
#pragma mark======返回队列头的方法==========
- (int)head:(id)sender {
int isEmpty=tail-head;
if (isEmpty==0) {
[self alertEmpty];
return 0;
}
else{
self.label_Head.text=[NSString stringWithFormat:@" %d",a[head]];
return a[head%MAX1];
}
}
#pragma mark======删除队列头的方法==========
- (int)delete_head:(id)sender {
int isEmpty=tail-head;
if (isEmpty==0) {
[self alertEmpty];
return 0;
}
else{
a[head%MAX1]=0;
head++;
self.label_Delete_Head.text=@"成功";
return 1;
}
}
#pragma mark--====添加到队列尾部的方法=======下面三个方法需要用户输入值。=============
- (void)insert_tail:(id)sender {
[self insetValue];//调用输入数据的弹出框。
flag=1;
}
#pragma mark======判断元素是否在队列中的方法。=====
- (int)isIn:(id)sender {
int isEmpty=tail-head;
if (isEmpty==0) {
[self alertEmpty];
return 0;
}
else{
[self insetValue];//调用输入数据的弹出框。
flag=3;
}
return 1;
}
#pragma mark======删除某个值的方法=============
- (int)delete_value:(id)sender {
int isEmpty=tail-head;
if (isEmpty==0) {
[self alertEmpty];
return 0;
}
else{
[self insetValue];//调用输入数据的弹出框。
flag=2;
return 0;
}
}
//需要用户输入值的时候用到的方法。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex==1) {
self.myTextField.text=self.myTextField.text;
}
else{
self.myTextField.text=@"";
}
NSLog(@"myTextField.text====%@",myTextField.text);
if (flag==1) {
[self insertTotail];
}
if (flag==2) {
[self deleteValue];
}
if (flag==3) {
[self isIn];
}
}
//用户输入数值后添加到队列尾的方法。
-(int)insertTotail{
int tempLength=tail-head;
if ([self.myTextField.text intValue]==0) {
self.label_Insert_tail.text=@"失败";
return 0;
}
if (tempLength<MAX1) {
a[tail%MAX1]=[self.myTextField.text intValue];
tail++;
}
else{
a[tail%MAX1]=[self.myTextField.text intValue];
tail++;
head++;
}
self.label_Insert_tail.text=@"成功";
return 1;
}
//用户输入数值后删除某个值的方法。
-(int)deleteValue{
int mylength=tail-head;
int tempa=0;
for (int i=0; i<mylength; ++i) {
if (a[(head+i)%MAX1]==[self.myTextField.text intValue]) {
if (i<mylength/2) {//把前半部分往后移动。
for (int j=i; j>0; --j) {
a[(head+j)%MAX1]=a[(head+j-1)%MAX1];
}
a[head%MAX1]=0;//把移动后的第一个元素赋值为0;
head++;
}
else{//把后半部分往前移动。
for (int j=i; j<mylength; ++j) {
a[(head+j)%MAX1]=a[(head+j+1)%MAX1];
}
a[tail%MAX1]=0;//把移动后的第一个元素赋值为0;
tail--;
}
self.label_Delete_value.text=@"成功";
tempa=1;
counta++;
}
}
if (tempa==1) {//如果tempa==1则证明至少找到过一次。
counta=1;
[self deleteValue];
}
else if(counta==0){//只要是为了判断有多个相同的值的情况。
self.label_Delete_value.text=@"没有找到元素";
}
return 0;
}
//用户输入数值后判断该数值是否在方法。
-(int)isIn{
int mylength=tail-head;
for (int i=0; i<mylength; ++i) {
if (a[(head+i)%MAX1]==[self.myTextField.text intValue]) {
self.label_IsIn.text=@"元素在队列中";
return 1;
}
}
self.label_IsIn.text=@"元素不在队列中";
return 0;
}
//弹出队列为空的提示。
-(void)alertEmpty{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"对不起" message:@"队列为空" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
//弹出输入数据的提示框。
-(void)insetValue{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"请输入一个数字" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
self.myTextField = [[UITextField alloc]
initWithFrame:CGRectMake(12, 45, 260, 25)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[alert addSubview:myTextField];
[myTextField release];
[alert show];
}
- 浏览: 1366564 次
- 性别:
- 来自: 开封
文章分类
最新评论
-
用户6006038975:
macd2666 写道录制出来的语音声音好轻啊。你好,这个编译 ...
ios音频录制和播放,文件很小。压缩效果不错 -
用户6006038975:
macd2666 写道录制出来的语音声音好轻啊。
ios音频录制和播放,文件很小。压缩效果不错 -
用户6006038975:
linker command failed with exit ...
ios音频录制和播放,文件很小。压缩效果不错 -
mapboo:
http://www.codertopic.com/?page ...
史上最全的iOS面试题及答案 -
macd2666:
录制出来的语音声音好轻啊。
ios音频录制和播放,文件很小。压缩效果不错
- 循环队列.zip (85.3 KB)
- 下载次数: 19
发表评论
-
mac 好用的快捷键
2017-02-03 16:38 657快捷键大全:xcode:1.工程导航器:Command+1 ... -
高德导航路线规划返回信息:
2016-09-23 15:38 1250高德导航路线规划返回信息: 2016-09-2 ... -
iOS block 循环引用
2016-08-08 18:36 733@interface ToolDemoViewCo ... -
iOS 证书过期的问题
2016-07-01 22:09 1825IOS证书过期 Apple Worldwid ... -
如何把本地项目上传到github
2016-06-28 09:42 1297转载自 :http://blog.csdn.net/han ... -
swift 开源框架
2016-04-21 15:05 1198必须Mark!43个优秀的Swift开源项目推荐 转 ... -
JavaScript中execCommand命令详解及实例展示
2016-04-09 08:46 1419转自:http://www.abcd9. ... -
js 监听键盘动作
2016-04-09 08:44 1287转载自:http://geelong.javaeye.com ... -
NSTimer
2016-01-30 15:44 884------------------------------ ... -
更改UITextField 的 placeholder的颜色
2016-01-27 21:39 935方式一: _codeTextField.attribute ... -
iOS UIWebView 和网页交互,返回
2016-01-21 15:32 3156- (BOOL)webView:(UIWebView *) ... -
判断scrlloview是否是向下滑动的
2016-01-20 15:54 1277#pragma mark 判断页面是否是向下滑动的 -(v ... -
ReactiveCocoa 学习笔记
2015-12-30 12:19 3047Tip: 自己开发了好玩的APP: 《小明搜索》(App ... -
UICollectionViewFlowLayout 瀑布流
2015-12-24 13:00 1861Tip: 自己开发了好玩的APP: 《小明搜索》 ... -
iOS 类目添加属性 runtime
2015-11-09 10:11 1118给类目添加属性虽然编译的时候不报错,但是,运行的时候, ... -
podspec 发布自己的pods到CocoaPods trunk
2015-11-06 15:31 2724https://github.com/zjjzmw1/ZM ... -
自己写的获取网络图片,不放内存里,包括文件的删除,创建
2015-11-06 11:44 1302// // UIImageView+CacheURL.m ... -
mac 系统升级 后 cocoapods 等命令行不能用
2015-10-16 23:49 1465sudo gem install -n /usr ... -
xcode直接连接真机有时候崩溃,单独运行就不崩溃
2015-10-08 09:34 1352很可能是你的端点的问题。。。把项目中的断点都去掉试试,,如果不 ... -
文本存储自定义对象。
2015-09-22 13:59 828/** * 缓存model 的 ...
相关推荐
在这里,你可能会找到如何编译和运行代码的说明,以及对循环队列实现的具体描述。 2. **Queue_Array.xcodeproj**:这是一个Xcode项目文件,表明该实现可能是在苹果的Xcode开发环境中编译和测试的。如果你使用Mac OS...
在iOS开发中,实现图片循环浏览...总之,实现iOS循环浏览图片的关键在于合理利用UIScrollView的contentSize和图片的重用机制。通过这种方式,不仅可以创建出流畅的图片浏览体验,还能有效控制内存使用,提升应用性能。
"ios-无线循环跑马灯.zip" 是一个包含实现无限循环跑马灯效果的项目资源,它源自GitHub上的开源项目——由liuzexin创建并维护的Marquee库。这个库专门用于创建类似于LED显示屏那样的滚动文字效果,常见于APP的标题或...
在iOS中,所有的用户交互都由UIKit框架处理,它通过事件循环来捕获并分发触摸事件。当用户在屏幕上触摸时,这些事件被硬件传感器捕捉,然后转化为触摸对象(UITouch)传递给视图层次结构。每个视图都有机会响应这些...
解压并运行这个示例,可以帮助你更好地理解如何在iOS中实现两个线程的循环交替调用。 总结来说,常驻线程在iOS开发中用于后台任务处理,通过GCD或NSOperationQueue可以轻松创建和管理这些线程。通过精心设计的线程...
- 若要使线程常驻,你需要在`main`方法内实现一个循环,持续检查是否有新的任务需要执行。 3. **Grand Central Dispatch (GCD)** GCD是Apple推出的一种基于C语言的多线程技术,它在底层实现了线程管理,开发者...
- GCD(Grand Central Dispatch)原理与应用:串行队列、并行队列的创建与使用。 - NSOperation与NSOperationQueue:了解任务依赖关系管理。 - Run Loop机制:深入理解RunLoop在后台任务执行中的作用。 - **性能...
iOS并发编程是针对苹果iOS平台开发过程中实现多任务并行执行的一系列编程技术。它旨在解决在单线程模型中执行多个任务时可能遇到的效率低下的问题。iOS并发编程的学习重点主要包括以下几个方面: 1. Grand Central ...
Runloop是iOS应用中另一个关键概念,涉及到事件循环和线程管理,面试题可能会要求解释其工作原理和如何合理使用。 在动画部分,面试可能会询问Core Animation的使用,包括CA层的概念、关键帧动画、时间函数和过渡...
当然,实际项目中还需要考虑异常处理、性能优化、消息队列等复杂情况,但这些基本操作构成了实现推送服务的基础。在TextAps这个文件中,可能包含了具体的Java代码示例,供开发者参考学习。在实践中,结合文档和示例...
- 引用计数(ARC):理解引用计数的工作原理,如何避免循环引用和强引用陷阱。 - Weak和Unowned:知道何时使用它们来解决内存问题。 - Swift中的Deinit和析构函数:了解它们在什么时候被调用以及如何正确使用。 ...
另外,RunLoop是iOS中一个非常重要的概念,它是事件接收循环,用于处理异步事件,其主要作用是维护线程的生命周期。 首先,我们来看看NSThread。NSThread是Objective-C提供的轻量级线程,它允许我们直接操作线程。...
iOS并发编程指南详细介绍了如何使用GCD和Operation Queues来实现高效的任务并发执行。GCD提供了基于队列的轻量级并发编程方法,而Operation Queues则提供了更面向对象的并发处理方式。此外,还涉及到Dispatch ...
1. **多线程**:iOS应用开发中,多线程用于实现并发执行任务,提高应用程序响应速度。主要技术包括NSOperationQueue、GCD(Grand Central Dispatch)和NSThread。GCD是Apple推出的一种高效处理并发的技术,它提供了...
3. **单例模式**:了解单例的实现方式,以及在iOS中的应用场景。 4. **依赖注入**:理解DI的概念,如何在Swift中实现依赖注入。 5. ** Reactive Programming**:简述ReactiveCocoa或RxSwift的响应式编程思想,及其...
GCD(Grand Central Dispatch)提供了串行队列,它保证了队列上的任务按顺序执行,从而实现线程同步。通过`dispatch_queue_create`创建一个串行队列,然后用`dispatch_async`或`dispatch_sync`提交任务,可以确保...
面试官可能会问及循环引用(Retain Cycle)的问题及解决办法,如使用弱引用或Block的__weak关键字。 4. **多线程** - GCD(Grand Central Dispatch)是苹果提供的多线程解决方案,理解队列(Dispatch Queue)类型...
首先,Runloop是iOS中的一个核心概念,它管理着应用程序的事件循环,确保程序在没有用户交互时仍然能够保持运行,有效地节省资源。理解Runloop的工作模式、线程关系和配置选项,是开发者优化性能、处理定时任务的...
- 使用`dispatch_queue_create`创建队列,`dispatch_async`异步提交Block到队列执行,可以实现任务的并发执行。 - `dispatch_sync`同步提交Block,会在当前队列上等待Block执行完成。 6. **Block与网络请求** - ...