新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 C/C++编程思想 』 → [求助]请教一个c++程序问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4889 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]请教一个c++程序问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     segeon 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:24
      积分:214
      门派:XML.ORG.CN
      注册:2008/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给segeon发送一个短消息 把segeon加入好友 查看segeon的个人资料 搜索segeon在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看segeon的博客楼主
    发贴心情 [求助]请教一个c++程序问题

    我写的一个合并顺序表的程序有问题,可看了半天也没弄明白,请高人指点。。。
    //定义一个动态数组类,该类可实现自动管理数组大小
    #include<assert.h>

    #define maxSize 10
    #define increment 10

    template <class T>
    class DynamicArray
    {
    private:
     int size;               //数组目前大小
     T* elem;                 //数组元素
    public:
     DynamicArray();          //构造函数
        ~DynamicArray();
     void AddElem(T a); //往数组中添加新的元素,若发现数组已满,则自动分配新的存储空间
     int GetLength();//返回数组的当前长度
     T* GetHead();

    };

    template <class T>
    DynamicArray <T>::DynamicArray()
    {
     size = 0;
     elem = new T[maxSize];
     assert(elem);
     cout<<"constructor ok!";
    }

    template <class T>
    DynamicArray <T>::~DynamicArray()
    {
     delete [] elem;
    }

    template <class T>
    void DynamicArray <T>::AddElem(T a)
    {
     int i,len=size;
     T* temp;
     if (size >= maxSize)
     {//判断数组的现有长度,如果超过了允许的最大值则为数组分配新的存储空间
     len += increment;
     temp=new T[len];
     assert(temp);
     for ( i=0;i<size;i++)
      temp[i]=elem[i];
     delete[] elem;
     elem = new T[len];
     //assert (elem);
     i=0;
     while ( i< size ) elem[i++] = temp[i++];
     delete[] temp;
     elem[size] = a;}
     elem[size] = a;
     size++;
    }

    template <class T>
    int DynamicArray <T>::GetLength()
    {
     return size;
    }

    template <class T>
    T* DynamicArray<T>:: GetHead()
    {
     return elem;
    }

    -----------------------
    //比较两个顺序表的大小
    #include <iostream>
    #include "dynamicArray.h"
    using namespace std;


    int Compare(DynamicArray<char> a,DynamicArray<char> b)
    {
    char* pa,*pb;
    pa=a.GetHead();
    pb=b.GetHead();
    while ( *pa && *pb && *pa == *pb ) { pa++; pb++; }
    if ( !*pa && !*pb ) return 0;//两个字符数组相等
    if ( *pa == NULL && *pb != NULL) return -1; //说明a<b
    if ( *pa && *pb && *pa<*pb ) return -1; //也说明a<b
    return 1; //否则a>b
    }

    int main()
    {
     DynamicArray<char> array1,array2;
     char ch;
     cout<<"请输入第一个字符数组,以“*”结束:"<<endl;
     cin>>ch;
     while ( ch != '*')
     {array1.AddElem(ch); cin>>ch;}
     cout<<"请输入第二个字符数组,以“*”结束:"<<endl;
     cin>>ch;
     while ( ch != '*')
     {array2.AddElem(ch);cin>>ch;}
     switch ( Compare( array1,array2 ))
     {
     case 0 : cout<<"两个数组相等!";break;
     case -1: cout<<"第一个数组小于第二个数组";break;
     case 1: cout<<"第一个数组大于第二个数组";break;
     default: cout<<"有错误!";break;
     }

    }


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/10/9 10:46:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/28 13:53:58

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms