?? zarray.h
字號(hào):
#ifndef _ZARRAY_H_
#define _ZARRAY_H_
#include <stdlib.h>
#include <string.h>
class ZArray
{
void **buffer;
void append_size()
{
int newsize;
if(size==0)
newsize=4;
else
newsize=size<<1;
void **tmp=new void * [newsize];
//for(int i=0;i<size;i++)
// tmp[i]=buffer[i];
memcpy(tmp,buffer,size*sizeof(void*));
delete[] buffer;
buffer=tmp;
size=newsize;
}
public:
int size;
int no;
ZArray()
{
size=0;
no=0;
buffer=0;
}
~ZArray()
{
if (buffer)
free(buffer);
}
void clear()
{
no=0;
}
void* operator[](int n)
{
if(n<no)
return(buffer[n]);
return(0);
}
int add(void *p) //加入隊(duì)列前
{
if(no>=size)
append_size();
int i;
for(i=no;i>0;i--)
buffer[i]=buffer[i-1];
buffer[0]=p;
no++;
return(no);
}
int push(void *p) //隊(duì)列最后加
{
if(no>=size)
append_size();
buffer[no]=p;
no++;
return(no);
}
void insert(int n,void *p) //插入在位置i
{
if(no>=size)
append_size();
int i;
for(i=no;i>n;i--)
buffer[i]=buffer[i-1];
buffer[n]=p;
no++;
}
int insert(void *fp,void *p) //插入在fp前
{
int n;
for(n=0;n<no;n++)
if(buffer[n]==fp)
{
insert(n,p);
return(n);
}
return(-1);
}
int remove(void *p) //刪除p
{
int n,i;
for(n=0;n<no;n++)
if(buffer[n]==p)
{
no--;
for(i=n;i<no;i++)
buffer[i]=buffer[i+1];
return(n);
}
return(-1);
}
void *remove(int n) //刪除第i個(gè)
{
int i;
if(n>=0&&n<no)
{
void *ret=buffer[n];
for(i=n;i<no-1;i++)
buffer[i]=buffer[i+1];
no--;
return(ret);
}
return(0);
}
void *removefirst() //刪除最后一個(gè)
{
if(no)
{
void *ret=buffer[0];
no--;
for(int i=0;i<no;i++)
buffer[i]=buffer [i+1];
return(ret);
}
return(0);
}
void *pop() //刪除第一個(gè)
{
if(no)
{
no--;
return(buffer[no]);
}
return(0);
}
void *find(int n) //查找第 i個(gè)
{
if(n>=0&&n<no)
return(buffer[n]);
return(0);
}
int find(void *p) //查找p,返回位置
{
int n;
for(n=0;n<no;n++)
if(buffer[n]==p)
return(n);
return(-1);
}
void *findlast()
{
if(no)
return(buffer[no-1]);
return(0);
}
int movetolast(void *p) //將p移動(dòng)到最后一個(gè)
{
int n,i;
void *tmp;
for(n=0;n<no;n++)
if(buffer[n]==p)
{
tmp=buffer[n];
for(i=n;i<no-1;i++)
buffer[i]=buffer[i+1];
buffer[no-1]=tmp;
return(n);
}
return(-1);
}
int movetofirst(void *p) //將p移動(dòng)到第一個(gè)
{
int n,i;
void *tmp;
for(n=0;n<no;n++)
if(buffer[n]==p)
{
tmp=buffer[n];
for(i=n;i>0;i--)
buffer[i]=buffer[i-1];
buffer[0]=tmp;
return(n);
}
return(-1);
}
};
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -