#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];
}
- 浏览: 1354262 次
- 性别:
- 来自: 开封
文章分类
最新评论
-
用户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 569快捷键大全:xcode:1.工程导航器:Command+1 ... -
高德导航路线规划返回信息:
2016-09-23 15:38 1179高德导航路线规划返回信息: 2016-09-2 ... -
iOS block 循环引用
2016-08-08 18:36 690@interface ToolDemoViewCo ... -
iOS 证书过期的问题
2016-07-01 22:09 1782IOS证书过期 Apple Worldwid ... -
如何把本地项目上传到github
2016-06-28 09:42 1252转载自 :http://blog.csdn.net/han ... -
swift 开源框架
2016-04-21 15:05 1171必须Mark!43个优秀的Swift开源项目推荐 转 ... -
JavaScript中execCommand命令详解及实例展示
2016-04-09 08:46 1335转自:http://www.abcd9. ... -
js 监听键盘动作
2016-04-09 08:44 1233转载自:http://geelong.javaeye.com ... -
NSTimer
2016-01-30 15:44 841------------------------------ ... -
更改UITextField 的 placeholder的颜色
2016-01-27 21:39 893方式一: _codeTextField.attribute ... -
iOS UIWebView 和网页交互,返回
2016-01-21 15:32 3123- (BOOL)webView:(UIWebView *) ... -
判断scrlloview是否是向下滑动的
2016-01-20 15:54 1237#pragma mark 判断页面是否是向下滑动的 -(v ... -
ReactiveCocoa 学习笔记
2015-12-30 12:19 3004Tip: 自己开发了好玩的APP: 《小明搜索》(App ... -
UICollectionViewFlowLayout 瀑布流
2015-12-24 13:00 1813Tip: 自己开发了好玩的APP: 《小明搜索》 ... -
iOS 类目添加属性 runtime
2015-11-09 10:11 1072给类目添加属性虽然编译的时候不报错,但是,运行的时候, ... -
podspec 发布自己的pods到CocoaPods trunk
2015-11-06 15:31 2682https://github.com/zjjzmw1/ZM ... -
自己写的获取网络图片,不放内存里,包括文件的删除,创建
2015-11-06 11:44 1258// // UIImageView+CacheURL.m ... -
mac 系统升级 后 cocoapods 等命令行不能用
2015-10-16 23:49 1398sudo gem install -n /usr ... -
xcode直接连接真机有时候崩溃,单独运行就不崩溃
2015-10-08 09:34 1286很可能是你的端点的问题。。。把项目中的断点都去掉试试,,如果不 ... -
文本存储自定义对象。
2015-09-22 13:59 778/** * 缓存model 的 ...
相关推荐
IOS开发中异步网络请求上实现同步逻辑 前提: 可能遇到一些问题,比如上传多个数据,需要等多个数据上传成功后做一定的处理,而且一个个上传,万一哪个上传失败了,后面就不需要上传了,直接报错。 之前ASI的网络库...
iOS面试题-----进程、线程、多进程、多线程、任务、队列、NSThread、GCD、NSOprationQueue... 8、2019 iOS面试题-----多线程相关之GCD、死锁、dispatch_barrier_async、dispatch_group_async、Dispatch Semaphore 9...
也称为循环缓冲区。 一个特定大小的数组,从概念上讲回到开头。 列表 链接列表。 通过链接连接的数据项序列。 涵盖单链表和双链表。 跳过列表。 跳过列表是一种概率数据结构,具有与 AVL/ 或红黑树相同的对数时间...
Queue(队列) Union Find(并查集) 内存 循环引用 内存管理 内存布局 TaggedPointer 引用计数 弱引用表 ARC、MRC 自动释放池 多线程 NSThread GCD NSLock NSRecursiveLock OSSpinLock @synchronized POSIX pthread...
同步和异步执行区分同步和异步调用/功能队列-串行和并发服务质量优先级倒置线程数结合框架操作和操作队列GCD API: 调度工作项派遣组信号量派送壁垒 循环语句分支机构声明带标签的声明控制转移表推迟陈述做陈述...
需求是怎样的:for 循环里面、多个网络请求上传图片,每次上传一张,至于为什么每次只上传一张呢,因为上传一张将要返回图片存储服务器的地址,然后再把地址作为请求参数,请求自己服务器的 API。 过程可以说曲折,...
自带消息队列(终于可以像iOS一样啦,不用去写延时啦)。 支持同时开启多个通知。 可以连续操作发送数据、读取特征、开启通知,即使你在for循环中写也没问题,自带队列。 扫描操作支持-> 设置扫描时长、根据设备名称...
循环依赖注意:不要用循环依赖循环依赖在iOS不同的版本的表现是不一样额。之前的会直接死锁。现在会直接不执行,但还是不要用跨队列指定依赖关系//通知是在主队列完成,也验证了依赖关系可跨队列指定!![...
gear-lib通用的C基础库,包含很多牛逼的库源码,可以编译后使用集成到自己项目中,全部用POSIX C实现,目标是为了跨平台兼容 linux, windows, android, ios. * 适用于物联网,嵌入式,以及网络服务开发等场景 !...
循环链接 队列 堆栈 堆 树木 二叉树 二叉搜索树 尝试 自平衡树 遍历树 广度优先搜索 - BFS 深度优先搜索 - DFS 前序、中序、后序 图表 Dijkstra 算法 / A* 搜索 哈希映射 处理碰撞 排序算法 插入 选择 合并 快的 ...
感谢得益于某位不愿留名的同学的帮助,队列模式已经较好的实现了。重要信息2017年09月25日18:42:00 修复了在iOS11下必现EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)的崩溃BUG。已知bug提示:在替换模式...
2.13 计数器控制循环的要点 2.14 for重复结构 2.15 for结构使用举例 2.16 switch多项选择结构 2.17 do/while重复结构 2.18 break和continue语句 2.19 逻辑运算符 2.20 混淆相等(.==)与赋值(=)运算符 ...
2.13 计数器控制循环的要点 2.14 for重复结构 2.15 for结构使用举例 2.16 switch多项选择结构 2.17 do/while重复结构 2.18 break和continue语句 2.19 逻辑运算符 2.20 混淆相等(.==)与赋值(=)运算符 ...
<br>(3)按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的首址。 <br>(4)执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程指针,指向当前正在...
因此我们将这样的异步模式称为Reactor模式,例如在iOS开发中的Run Loop概念,实际上非常类似于Reactor loop,主线程的Run Loop监听屏幕UI事件,一旦发生UI事件则执行对应的事件处理代码,还可以通过GCD等方式产生...
IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的应用十分广泛 Webview WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页 Activity ...
2.13 计数器循环的要点-------------------------------------------------60 2.14 for重复结构------------------------------------------------------62 2.15 for结构使用举例-----------------------------...