《数据结构与算法分析》习题-----第一章

PS:13题和14题,我将它们综合在一起·····因为我只看了题目对Object、Comparable没有了解(第一章都是一些回顾)·······

 1 //1.5编写一个递归方法,它返回数N二进制表示1的个数。
 2  #include<iostream>
 3  using namespace std;
 4  int ones(int x)
 5  {
 6      if(x < 2)
 7      return x;
 8      else
 9      return x % 2 + ones(x / 2);
10  }
11  
12  int oness(int x)
13  {
14      int n = 0;
15      while(x >= 2)
16      {
17          n += x % 2;
18          x /= 2;
19      }
20      n += x;
21      return n;
22  }
23  
24  int main( )
25  {
26      int X;
27      while(cin >> X)
28      {
29          cout << ones(X) << endl;
30          cout << oness(X) << endl;
31      }
32      return 0;
33  }

 

  1 /*1.13 题目:设计一个类模板Collection,来存储Object对象的集合(在一个数组中),以及该集合当前的大小。提供public型的函数isEmpty、makeEmpty、
  2  insert、remove和contains。当且仅当该集合中存在等于x的一个Object时,contains(x)返回true*/
  3  /*1.14 题目:设计一个类模板Comparable的对象的集合(在一个数组中),以及该集合当前的大小。提供public型的函数isEmpty、makeEmpty、remove、
  4  findMin和findMax。findMin和findMax分别返回该集合中的最小和最大的Comparable对象。*/
  5  #include<iostream>
  6  #include<cstring>
  7  using namespace std;
  8  
  9  const int M = 1000000;
 10  
 11  template <typename T>
 12  class Collection
 13  {
 14  public:
 15      Collection()
 16      {
 17          memset(a, 0, sizeof(a));
 18          count = 0;
 19      }
 20      ~Collection()
 21      {
 22          delete [] a;
 23          count = 0;
 24      }
 25      void isEmpty()
 26      {
 27          if(count)
 28              cout << "It is not empty!" << endl;
 29          else
 30              cout << "It is empty!" << endl;
 31      }
 32      void makeEmpty()
 33      {
 34          memset(a, 0, sizeof(a));
 35          count = 0;
 36      }
 37      void insert(const T &x)
 38      {
 39          a[count] = x;
 40          ++count;
 41      }
 42      void remove(const T &x)
 43      {
 44          int i;
 45          for(i = 0; i < count; ++i)
 46          {
 47              if(a[i] == x)
 48                  break;
 49          }
 50          for(; i <count; ++i)
 51          {
 52              a[i] = a[i+1];
 53          }
 54          --count;
 55      }
 56      bool contains(const T &x)
 57      {
 58          int i;
 59          for(i = 0; i <= count; ++i)
 60          {
 61              if(a[i] == x)
 62                  return true;
 63          }
 64          return false;
 65      }
 66      void findMin()
 67      {
 68          if(count == 0)
 69          cout << "The collection is empty!" << endl;
 70          else
 71          {
 72              T min = a[0];
 73              for(int i = 1; i < count; ++i)
 74              {
 75                  if(a[i] < min)
 76                  min = a[i];
 77              }
 78              cout << "The minimumest element in the collection is " << min << " !" << endl;
 79          }
 80      }
 81      void findMax()
 82      {
 83          if(count == 0)
 84          cout << "The collection is empty!" << endl;
 85          else
 86          {
 87              T max = a[0];
 88              for(int i = 1; i < count; ++i)
 89              {
 90                  if(a[i] > max)
 91                  max = a[i];
 92              }
 93              cout << "The maximumest element in the collection is " << max << " !" << endl;
 94           }
 95      }
 96  private:
 97      T a[10000];
 98      int count;
 99  };
100  
101  int main()
102  {
103      Collection<int> p;
104      int N, i, m;
105      while(cin >> N)
106      {
107          p.isEmpty();
108          for(i = 1; i <= N; ++i)
109          {
110              cin >> m;
111              p.insert(m);
112          }
113          p.isEmpty();
114          p.findMin();
115          p.findMax();
116          cout << "Input the  element you want to find:" << endl;
117          cin >> m;
118          if(p.contains(m))
119          {
120              cout << "The element exist in the collection!" << endl;
121          }
122          else
123              cout << "The element does not exist in the collection!" << endl;
124          cout << "Input the element you want to remove:" << endl;
125          cin >> m;
126          if(p.contains(m))
127          {
128              p.remove(m);
129              if(p.contains(m))
130                  cout << "The element remove unsuccessfully!" << endl;
131              else
132                  cout << "The element remove successfully!" << endl;
133          }
134          else
135          cout << "The element does not exist in the collection!" << endl;
136          cout << "Make the collection empty!" << endl;
137          p.makeEmpty();
138          p.isEmpty();
139      }
140      return 0;
141  }

 

 

转载于:https://www.cnblogs.com/alan-forever/archive/2012/09/11/2680043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值