当前位置:  编程技术>移动开发
本页文章导读:
    ▪循环行列的总结        循环队列的总结 #if 0NSString *tempStr=[NSString stringWithFormat:@"北京,你好"];NSString *strUTF=[tempStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"%@",strUTF);NSString *strGBK=[strUTF stringByReplacingPercent.........
    ▪ 持续分享12个亲测源码        继续分享12个亲测源码 继续分享12个亲测源码本系列源码亲自测试适用环境:Android 2.1分享给给位初学者,当中有不错的效果值得学习收藏的哦~很炫的解谜游戏源代码分享http://www.apkbus.com/a.........
    ▪ 图片比率缩放和裁剪适应区域       图片比例缩放和裁剪适应区域 @implementation UIImage( resizeAndCropExample ) - (UIImage *) resizeToSize:(CGSize) newSize thenCropWithRect:(CGRect) cropRect { CGContextRef context; CGImageRef imageRe.........

[1]循环行列的总结
    来源: 互联网  发布时间: 2014-02-18
循环队列的总结

#if 0
NSString *tempStr=[NSString stringWithFormat:@"北京,你好"];
NSString *strUTF=[tempStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",strUTF);
NSString *strGBK=[strUTF stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",strGBK);


问题一. 请实现一个顺序循环队列, 要求如下:
1. 队列有一个表头, 和一个表尾。
2. 队列的最大长度为N, N为一个预先定义好的数值
3. 要求实现如下方法:
a) push方法, 表示向表尾插入一个元素
b) front方法, 返回表头的元素
c) pop方法, 删除表头的元素
d) isInList方法, 判断一个元素是否在队列中
e) remove方法, 从队列中删除某个值的元素
f) length方法, 返回队列的实际长度
g) empty方法, 如果队列为空,则返回真, 否则返回假
首先定义一个数组表示一个循环队列。设置最大长度为n,实际队列的表头下标head  表尾下标为tail    初始化head=0,tail=0; 用a[n]={0}表示循环队列。

push方法:  添加一个元素temp;先判断length如果length<n则 a[tail%n]=temp;tail++;否则a[tail%n]=temp;tail++;     a[head%n]=0;head++;
front方法:先判断是否为空,如果为空提示一句话,否则返回a[head%n];
pop方法:先判断是否为空,如果为空提示一句话,否则a[head%n]=0;head++;
isInList方法:先判断是否为空,如果为空提示一句话,否则用for循环,(i=0,i<length;++i),判断是否和(head+i)%n相同 ,如果相同则返回1,否则返回0;
remove方法:先判断是否为空,如果为空提示一句话,否则,再获取它的长度length,用for循环,(i=0,i<length;++i),判断是否和(head+i)%n相同 ,如果相同返回i的值,如果i的值小于length/2 则删除这个值的同时把前面的元素往后移动,移动用一个for循环,(j=i,j>0;j--),                      a[(head+j)%n]=a[(head+j-1)%n]; 最后在for循环外面把a[head%n]=0;否则把后面的值往前移动。如果没有相同的提示一句话。

length方法:返回tail-head;
empty方法:如果tail-head=0则为返回1;否则返回0;


#endif


#define MAX1 10
#import <Foundation/Foundation.h>

int a[MAX1];//定义数组a表示队列,MAX1为最大长度,初始数据全部为0;
int head=0;//初始化表头下标为0;
int tail=0;//初始化表尾下标为0;


int empty(int head,int tail);    //判断是否为空的方法。
int Length(int head,int tail);   //判断长度。
void push(int *b,int x);         //从表尾插入一个元素。
int front(int *b);               //返回表头的元素。
int pop(int *b);                 //删除表头的元素。
int isInList(int *b,int x);      //判断元素是否在队列中。
int remove1(int *b,int x);       //从队列中删除某个值的元素。




//判断是否为空;
int empty(int head,int tail){
    if (tail-head==0) {
        return 1;
    }
    return 0;
}
//判断长度:
int Length(int head,int tail){
    return tail-head;
}
//从表尾插入一个元素。
void push(int *b,int x){
    int tempLength=Length(head, tail);
    if (tempLength<MAX1) {
       a[tail%MAX1]=x;
        tail++;
    }
    else{
        a[tail%MAX1]=x;
        tail++;
        a[head%MAX1]=0;
        head++;
    } 
}
//返回表头的元素;
int front(int *b){
    int isEmpty=empty(head, tail);
    if (isEmpty) {
        printf("对不起此队列为空,无法返回\n");
        return 0;
    }
    else{
        return a[head%MAX1];
    }
}
//删除表头的元素。
int pop(int *b){
    int isEmpty=empty(head, tail);
    if (isEmpty) {
        printf("对不起此队列为空,不能删除\n");
        return 0;
    }
    else{
        a[head%MAX1]=0;
        head++;
        return 1;
    }
}
//判断元素是否在队列中。
int isInList(int *b,int x){
    int isEmpty=empty(head, tail);
    if (isEmpty) {
        printf("对不起此队列为空,元素不在这里\n");
        return 0;
    }
    else{
        int mylength=Length(head, tail);
        for (int i=0; i<mylength; i++) {
            if (a[(head+i)%MAX1]==x) {
                return 1;
            }
        }
        printf("对不起此队列为空,元素不在这里\n");
        return 0;
    }
   
}
//从队列中删除某个值的的元素
int remove1(int *b,int x){
    int isEmpty=empty(head, tail);
    if (isEmpty) {
        printf("对不起此队列为空,元素不在这里不用删除了\n");
        return 0;
    }
    else{
        int mylength=Length(head, tail);
        for (int i=0; i<mylength; i++) {
            if (a[(head+i)%MAX1]==x) {
                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--;
                }
                return 1;
            }
        }
        printf("对不起此队列为空,元素不在这里不用删除了\n");
        return 0;
    }
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
       
       
       
        //判断是否为空;
        int isEmpty=empty(head,tail);
        if (isEmpty) {
            printf("此队列为空\n");
        }
        else{
            printf("此队列不为空\n");
        }
       
        //判断长度:
        int myLength=Length(head,tail);
        printf("此队列的长度为:%d\n",myLength);
       
        //向表尾插入一个数。
        int *b=a;
        push(b,5);
//        push(b,6);
        push(b,7);
//        push(b,8);
       
        //返回表头的元素
        int myfront=front(b);
        if (myfront) {
            printf("表头元素为a[%d]==%d\n",head%MAX1,myfront);
        }
        //删除表头的元素。
        int myPop=pop(b);
        if (myPop) {
            printf("删除成功\n");
        }
        //判断某个元素是否在队列中。
       int y=isInList(b, 7);
        if (y) {
            printf("该元素在队列中\n");
        }
        int z=remove1(b, 7);
        if (z) {
            printf("删除某个值成功\n");
        }
       
       
       
        //输出队列的元素。
        printf("\n下面是整个表的元素显示:\n");
        for (int i=head; i<tail; i++) {
            printf("a[%d]=%d\n",i%MAX1,a[i%MAX1]);
        }
        printf("head==%d,,tail===%d",head,tail);
    }
    return 0;
}





















    
[2] 持续分享12个亲测源码
    来源: 互联网  发布时间: 2014-02-18
继续分享12个亲测源码
继续分享12个亲测源码
本系列源码亲自测试
适用环境:Android 2.1
分享给给位初学者,当中有不错的效果值得学习收藏的哦~

很炫的解谜游戏源代码分享
http://www.apkbus.com/android-93029-1-1.html
SurfaceView添加组件view不被组件覆盖
http://www.apkbus.com/android-92787-1-1.html
果果看书源码
http://www.apkbus.com/android-92744-1-1.html
文件浏览器
http://www.apkbus.com/android-92668-1-1.html
Android天气预报源码
http://www.apkbus.com/android-92082-1-1.html
超炫页面特效集合源码
http://www.apkbus.com/android-91831-1-1.html
Activity设置相同的action进行判断源码
http://www.apkbus.com/android-91542-1-1.html
3D相册图片滑动+倾斜+放大+倒影处理源码
http://www.apkbus.com/android-91539-1-1.html
带闪光灯的二维码源码
http://www.apkbus.com/android-91537-1-1.html
用Intent传递网址,在自定义的网页中打开的实例
http://www.apkbus.com/android-91525-1-1.html
下拉通知效果源码
http://www.apkbus.com/android-91365-1-1.html
实现QQ好友列表源码
http://www.apkbus.com/android-91369-1-1.html

    
[3] 图片比率缩放和裁剪适应区域
    来源: 互联网  发布时间: 2014-02-18
图片比例缩放和裁剪适应区域
@implementation UIImage( resizeAndCropExample )

- (UIImage *) resizeToSize:(CGSize) newSize thenCropWithRect:(CGRect) cropRect {
    CGContextRef                context;
    CGImageRef                  imageRef;
    CGSize                      inputSize;
    UIImage                     *outputImage = nil;
    CGFloat                     scaleFactor, width;

    // resize, maintaining aspect ratio:

    inputSize = self.size;
    scaleFactor = newSize.height / inputSize.height;
    width = roundf( inputSize.width * scaleFactor );

    if ( width > newSize.width ) {
        scaleFactor = newSize.width / inputSize.width;
        newSize.height = roundf( inputSize.height * scaleFactor );
    } else {
        newSize.width = width;
    }

    UIGraphicsBeginImageContext( newSize );

    context = UIGraphicsGetCurrentContext();
    CGContextDrawImage( context, CGRectMake( 0, 0, newSize.width, newSize.height ), self.CGImage );
    outputImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    inputSize = newSize;

    // constrain crop rect to legitimate bounds
    if ( cropRect.origin.x >= inputSize.width || cropRect.origin.y >= inputSize.height ) return outputImage;
    if ( cropRect.origin.x + cropRect.size.width >= inputSize.width ) cropRect.size.width = inputSize.width - cropRect.origin.x;
    if ( cropRect.origin.y + cropRect.size.height >= inputSize.height ) cropRect.size.height = inputSize.height - cropRect.origin.y;

    // crop
    if ( ( imageRef = CGImageCreateWithImageInRect( outputImage.CGImage, cropRect ) ) ) {
        outputImage = [[[UIImage alloc] initWithCGImage: imageRef] autorelease];
        CGImageRelease( imageRef );
    }

    return outputImage;
}

@end

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3