查看: 808|回复: 0
打印 上一主题 下一主题

[其他] C++ 数组增删改查的代码

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-11-30 23:38:33 |只看该作者 |倒序浏览

  1. #ifndef __ArrayDemo__LWArray__
  2. #define __ArrayDemo__LWArray__

  3. #include <iostream>
  4. #include <strstream>

  5. template <typename T> struct LWArrayObject {
  6. public:
  7.     T data;
  8.     LWArrayObject <T> * next;
  9. };

  10. template <typename T> class LWArray {
  11. public:
  12.     int count;
  13. public:
  14.     void addObject(T t);
  15.     void insertObject(int index, T t);
  16.     void removeObject(int index);
  17.     void replaceObject(int index, T t);
  18.     T getObject(int index);
  19.     void clear();
  20.     T getFirstObject();
  21.     T getLastObject();
  22.     std::string toString();
  23. private:
  24.     LWArrayObject <T> * firstObject;
  25.     LWArrayObject <T> * lastObject;
  26. };

  27. template <typename T> void LWArray<T>::insertObject(int index, T t) {
  28.     LWArrayObject <T> * o = new LWArrayObject <T> ();
  29.     o -> data = t;
  30.     o -> next = nullptr;
  31.     LWArrayObject <T> * obj = firstObject;
  32.     LWArrayObject <T> * lastObj = nullptr;
  33.     if (index > 0) {
  34.         while (index > 0) {
  35.             lastObj = obj;
  36.             obj = obj -> next;
  37.             index--;
  38.         }
  39.         lastObj -> next = o;
  40.         o -> next = obj;
  41.     } else if (index == 0) {
  42.         firstObject = o;
  43.         o -> next = obj;
  44.     }
  45.     count++;
  46. }

  47. template <typename T> void LWArray<T>::clear() {
  48.     while (count > 0) {
  49.         removeObject(0);
  50.     }
  51. }

  52. template <typename T> T LWArray<T>::getFirstObject() {
  53.     return firstObject -> data;
  54. }

  55. template <typename T> T LWArray<T>::getLastObject() {
  56.     return lastObject -> data;
  57. }

  58. template <typename T> T LWArray<T>::getObject(int index) {
  59.     LWArrayObject <T> * obj = firstObject;
  60.     while (index > 0) {
  61.         obj = obj -> next;
  62.         index--;
  63.     }
  64.     return obj -> data;
  65. }

  66. template <typename T> void LWArray<T>::replaceObject(int index, T t) {
  67.     LWArrayObject <T> * obj = firstObject;
  68.     while (index > 0) {
  69.         obj = obj -> next;
  70.         index--;
  71.     }
  72.     obj -> data = t;
  73. }

  74. template <typename T> void LWArray<T>::removeObject(int index) {
  75.     LWArrayObject <T> * obj = firstObject;
  76.     LWArrayObject <T> * lastObj = nullptr;
  77.     if (index > 0) {
  78.         while (index > 0) {
  79.             lastObj = obj;
  80.             obj = obj -> next;
  81.             index--;
  82.         }
  83.         lastObj -> next = obj -> next;
  84.     } else if (index == 0) {
  85.         firstObject = obj -> next;
  86.     }
  87.     count--;
  88.     delete obj;
  89.     obj = nullptr;
  90. }

  91. template <typename T> void LWArray<T>::addObject(T t) {
  92.     LWArrayObject <T> * obj = new LWArrayObject <T> ();
  93.     obj -> data = t;
  94.     obj -> next = nullptr;
  95.     if (firstObject == nullptr) {
  96.         firstObject = obj;
  97.     }
  98.     if (lastObject != nullptr) {
  99.         lastObject -> next = obj;
  100.     }
  101.     lastObject = obj;
  102.     count++;
  103. }

  104. template <typename T> std::string LWArray<T>::toString() {
  105.     std::strstream ss;
  106.     ss << "Array(" << count << ")=[";
  107.     LWArrayObject <T> * obj;
  108.     for (int i = 0;i < count;i++) {
  109.         if (i == 0) {
  110.             obj = firstObject;
  111.             ss << obj -> data;
  112.         } else {
  113.             obj = obj -> next;
  114.             ss << "," << obj -> data;
  115.         }
  116.     }
  117.     ss << "]";
  118.     std::string str;
  119.     ss >> str;
  120.     return str;
  121. }

  122. #endif
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-31 05:14 , Processed in 0.073551 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部