当前位置:  编程技术>移动开发
本页文章导读:
    ▪数据结构-查寻        数据结构--查找查找(Searching),也称检索,查表,就是在大量的信息集中寻找一个特定的信息元素。 查找就是根据给定的关键字值,在查找表中确定一个关键字等于给定的记录或数据元素.........
    ▪ 谈一下CCLayer的区域到底有多大        谈谈CCLayer的区域到底有多大?(转载请注明原文地址:http://blog.csdn.net/while0/article/details/11130379) 作为CCSprite或CCNode的容器,CCLayer的边界在哪里,它所管辖的区域有多大呢? 如果精灵加入到.........
    ▪ 数据结构-栈       数据结构--栈栈是一种被限制在只能在表的一端进行插入和删除运算的线性表。         (局部变量是用栈来保存的) 可以进行插入和删除的一端称为栈顶(top),另一端称为栈底(bottom.........

[1]数据结构-查寻
    来源: 互联网  发布时间: 2014-02-18
数据结构--查找
查找(Searching),也称检索,查表,就是在大量的信息集中寻找一个特定的信息元素。

查找就是根据给定的关键字值,在查找表中确定一个关键字等于给定的记录或数据元素。若存在这样的数据元素,则称查找成功的,否则查找不成功。

查找是许多重要的计算机程序中最耗费时间的部分,查找算法的优劣密切关系着查找操作的速度。
顺序查找是最简单的查找技术     但是特别慢。

既适用于以顺序存储结构查找表的查找,也适用于以链式存储结构查找表的查找。

二分查找

#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#define LISTSIZE 100
typedef int DataType;
typedef struct
{
DataType data[LISTSIZE];
int nLength;
}SeqList;
void Print(SeqList* _p)
{
for(int i=0;i<_p->nLength;i++)
{
printf("%d\t",_p->data[i]);
}
printf("\n");
}
int BSearch(SeqList* _pList,DataType _key)
{
int nLow=0;
int nHigh=_pList->nLength-1;
int middle=0;
while(nLow<=nHigh)
{
middle=(nLow+nHigh)/2;
if(_pList->data[middle]==_key)
return middle;
else if(_pList->data[middle]>_key)
nHigh=middle-1;
else
nLow=middle+1;
}
return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
SeqList* q=(SeqList*)malloc(sizeof(SeqList));
q->nLength=8;
q->data[0]=10;
q->data[1]=11;
q->data[2]=19;
q->data[3]=21;
q->data[4]=22;
q->data[5]=30;
q->data[6]=32;
q->data[7]=122;
int num=32;
Print(q);
printf("%d",BSearch(q,num));
_getch();
return 0;
}

    
[2] 谈一下CCLayer的区域到底有多大
    来源: 互联网  发布时间: 2014-02-18
谈谈CCLayer的区域到底有多大?

(转载请注明原文地址:http://blog.csdn.net/while0/article/details/11130379)

作为CCSprite或CCNode的容器,CCLayer的边界在哪里,它所管辖的区域有多大呢? 如果精灵加入到CCLayer中,位置位于层的边界外,会不会显示不出来呢?

其实这里或多或少会有点误区,实际上可以理解为CCLayer是没有边界的,一个精灵作为子节点加入到层中,可以位于任何位置,能不能显示出来,决定于它是不是位于屏幕之内。

CCLayer作为从CCNode的继承而来的类,它也有ContentSize,也有AnchorPoint。但是它的ContentSize并不代表它的显示区域大小,CCNode不像精灵类,有纹理可以绘制,这个能真正的称作Content。 而CCLayer是个容器,本身并不可见。ContentSize和AnchorPoint的值共同来决定它的位置,除此以外没有任何作用。注意:AnchorPoint发生作用,需要在层初始化时加上这么一句:ignoreAnchorPointForPosition(false)。




CCLayer默认的ContentSize是屏幕大小,我们一般没有必要修改它的ContentSize。 如上图:蓝框就是未修改前的Layer的ContentSize,区域等于屏幕大小,左下角的位置为(0,0)。如果调用setContentSize修改,它的大小为红框区域,这个新的区域一定是以(0,0)为起点的。

为什么说ContentSize也能影响CCLayer的位置呢? 分两种情况:

(1) 如果它的anchor point位于(0,0),改变ContentSize不会影响它的位置。

(2) 如果anchor point在其它点,改变ContentSize就会影响它的位置。例如:anchor point = (0, 1),没有改变ContentSize之前,anchor point在蓝框的左上角位置,改变后,在红框的左上角的位置。所以同样在调用setPosition设置它的位置时,结果是不一样的。




    
[3] 数据结构-栈
    来源: 互联网  发布时间: 2014-02-18
数据结构--栈
栈是一种被限制在只能在表的一端进行插入和删除运算的线性表。         (局部变量是用栈来保存的)

可以进行插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),当表中没有元素时(表长为0的栈)称为空栈。

栈的修改是按后进先出的原则进行,因此栈被称为后进先出(Last in first out)线性表。

  堆和栈是占一块内存的,栈向下存,堆向上存,当堆和栈相遇的时候内存就占满了
存入与取出
     
基本运算:
1.初始化
InitStack(S)
构造一个空栈S

2.StackEmpty(S)
判断栈空,若S为空栈,则返回true,否则返回false

3.StackFull(S)
判断栈满,若S为满栈,则返回true,否则返回false
注意:该运算只适合顺序栈的存储结构。

如果栈需要很大内存的时候可以用虚拟内存的方式,在物理内存不够的时候可以用磁盘的内存来虚拟内存使用。但会使速度变慢。

4.Push(S,x)
进栈,若栈S不满,则将元素x插入到S的栈顶。

5.Pop(S)
退栈,若栈S非空,则将S的栈顶元素删去,并返回该元素。

6.StackTop(S)
取栈顶元素,若栈S非空,则返回栈顶元素,但栈状态不变。
顺序栈
定义:栈的顺序存储结构。
#define  LISTSIZE  100         //栈的最大容量
typedef char DataType;        //保存的数据类型
typedef struct                //C程序员的使用技巧  SeqStack并不是变量而是struct结构体的别名,因此在C中定义结构变量需要加struct 所以用这种方式可以省去struct
{
DataType data[ LISTSIZE ];
int  top;                //栈顶指针
}SeqStack;

初始化 置栈空
void InitStack(SeqStack *_S)
{
_S-> top =-1;
}

判断栈空
bool StackEmpty(SeqStack* s)
{
return s->top==-1;
}

判断顺序栈满
bool StackFull(SeqStack *s)
{
return  LISTSIZE -1==s-> top ;           栈顶指针指向内存-1,这样就是满了,因为栈顶指针从0开始。。
}

进栈
bool Push(SeqStack* s,DataType x)
{
if(StackFull(s))
return false;
s->data[++s->top]=x;
return true;
}

顺序退栈
bool Pop(SeqStack* s,DataType* data)
{
if(StackEmpty(*s))
return false;
else
{
*data=s->data[s->top];
s->top--;
return true;
}
}

链栈
栈顶指针就是链表的头指针

#define  LISTSIZE  100         //栈的最大容量
typedef char DataType;        //保存的数据类型

typedef struct stacknode{
DataType date;                        //内容
struct stacknode *next;           //指针
}StackNode;

typedef StackNode* LinkStack;

初始化  置栈空
void InitLinkStack(LinkStack *_S)
{
*_S=NULL;
}

判断链栈空
bool StackLinkEmpty(LinkStack s)
{
return s==NULL;
}

虚拟内存
bool VirtualMemory(LinkStack s)
{
FILE* stream;
if(s == NULL)
{
if((stream = fopen("memory.txt","r+")) != NULL)
{
fseek(stream, -sizeof(StackNode), SEEK_END);
fread(s,sizeof(StackNode),1,stream);
while (NULL == s->next)
{
fseek(stream, -2 * sizeof(StackNode), SEEK_CUR);
fread(s,sizeof(StackNode),1,stream);
}
fseek(stream, -sizeof(StackNode), SEEK_CUR);
s->next = NULL;
fwrite(s,sizeof(StackNode),1,stream);
fclose(stream);
return true;
}
else
return false;
}
else
{
if((stream = fopen("memory.txt","a+")) != NULL)
{
s->next = (LinkStack) 1;
fwrite(s,sizeof(StackNode),1,stream);
fclose(stream);
free(s);
return true;
}
else
return false;
}
}

链栈进栈
void Push(LinkStack* s,DataType x)
{
LinkStack p=(LinkStack)malloc(sizeof(stacknode));
if(NULL==p)
{
VirtualMemory(s);
p=(LinkStack)malloc(sizeof(stacknode));
}
p->data=x;
p->next=*s;
*s=p;
}

链栈退栈
bool Pop(LinkStack* pStack,DataType* data)
{
if(StackEmpty(*pStack)))
return false;
LinkStack temp=*pStack;
*data=temp->data;
*pStack=temp->next;
free(temp);
temp=NULL;
return true;
}

int _tmain(int argc, _TCHAR* argv[])
{
LinkStack top,bottom;
InitLinkStack(&top);
_getch();
return 0;
}


    
最新技术文章:
▪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