当前位置: 首页 >> 程序设计 >> C语言实现动态数组
 

C语言实现动态数组

作者:lyz84331      来源:http://blog.csdn.net/lyz84331     发表时间:2006-10-29     浏览次数:      字号:    

test.h

#ifndef TEST_H
#define TEST_H
template
<typename T>class Array
{
private:
    T
* parray;                //定义动态数组
    int room;                //存储空间大小的值
public:
    Array()
        :room    (
0)
        ,parray    (NULL)
    {
        parray
=(int*)malloc(sizeof(int)*room);
    }
    
~Array()
    {
        
if(parray!=NULL)
            free(parray);
    }
    
int push_back(T m)        //推入一个数组元素
    {
        room
++;
        parray
=(T*)realloc(parray,sizeof(T)*room);
        
*(parray+room-1)=m;
        
return *(parray+room-1);
    }
    
int sizeof_Array()            //得到数组大小
    {
        
return room;
    }
    
bool remove(int k)            //删除第k个元素
    {
        printf(
"删除元素%d后 ",k);
        
if(k>room-1 || k<0)
        {
            
return false;
        }
        
else
        {
            memmove(parray
+k,parray+k+1,sizeof(T)*(room-1-k));
            room
-=1;
            
return true;
        }
    }
    
bool insert(int k,T element)        //插入一个元素
    {
        printf(
"插入元素%d后 ",k);
        
if(k>room || k<0)
        {
            
return false;
        }
        
else
        {
            room
++;
            parray
=(T*)realloc(parray,sizeof(T)*room);
            memmove(parray
+k+1,parray+k,sizeof(T)*(room-1-k));
            
*(parray+k)=element;
        }
    }
    T query(
int k)                //查询第k个元素的值
    {
        
if(k>room-1 || k<0)
        {
            
return -1;
        }
        
else
        {
            
return *(parray+k);
        }
    }
    
void display()                //显示数组内元素个数
    {
        
for(int i=0;i<room;i++)
            cout
<<query(i)<<endl;
        cout
<<"数组内元素个数"<<sizeof_Array()<<endl;
    }
    T
* begin()
    {
        
return parray;
    }
    T
* end()
    {
        
return parray + room;
    }
};
#endif

 test.cpp

#include<iostream>
#include
"test.h"

using namespace std;

void main()
{
    Array
<int> intArray;
    intArray.push_back(
1);
    intArray.push_back(
2);
    intArray.push_back(
3);
    intArray.push_back(
4);
    intArray.push_back(
5);
    intArray.push_back(
6);
    intArray.push_back(
7);
    intArray.push_back(
8);
    intArray.push_back(
9);
    
/*intArray.display();
    intArray.remove(3);
    intArray.display();
    cout<<intArray.begin()<<endl;
    cout<<intArray.end()<<endl;
    int* ite=NULL;
    for(ite=intArray.begin();ite!=intArray.end();ite++)
    {
        printf("%d ",*ite);
    }
    for(ite=intArray.end();ite!=intArray.begin();ite--)
    {
        printf("%d ",*ite);
    }
*/
}

编辑 webmaster

 
 
 
评论更多>>
 
1
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •