萌新总结的C++三种在数据组中删除指定数据的基础思路

注意:我这里说的只是基础思路,用来给未来的C++萌新们提供参考。当然作为现在的萌新,很希望可以得到大佬们的指点。

方法一:标记法
就是同时定义一个与数据组数量相同的数组,然后每个数据都初始化成1.

 int a[n];
 for(int i=0;i<n;i++)
 {
  a[i]=1;
 }

接下来进行循环查找,如果找到了指定数据,就把对应顺序的数组的数据变成0.

for(int i=0;i<n;i++)
{
 if(...) a[i]=0;
}

最后输出的时候,如果对应顺序数组的数据为0,则不进行输出。

for(int i=0;i<n;i++)
{
 if(a[i]!=0) cout<<b[i]<<endl; //这里b[]是数据组
}

方法二:覆盖法
循环查找数据时,找到了对应的数据,则使之后的每一个数据依次覆盖上一个数据(记得同时使n减去1)

for(int i=0;i<n;i++)
{
 if(...)
 {
  for(int j=i;j<n;j++) { a[j]=a[j+1]; } //这里a[]是数据组
  n--;
 }
}

方法三:置换法
倘若发现有与指定数据相同的数据时,将其与最后的数据置换(第一个相同的与倒数第一个置换,第二个相同的与倒数第二个置换位置,以此类推)。

for(int i=0,j=1;i<n;i++)
{
 if(...) 
 {
  int num=a[i]; //例子这里用的数据类型是int型,a[]是数组
  a[i]=a[n-j];
  a[n-j]=num;
  j++;
 }
}

输出的时候注意不要输出后面的数据。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
商品货架管理可以使用树形结构实现。具体的实现方式可以参考以下思路: 首先,定义一个结构体表示商品信息,包括商品编号、商品名称、商品价格等属性。 ```c++ struct Commodity { int id; std::string name; float price; //其他属性 }; ``` 然后,定义一个树节点结构体表示货架信息,包括货架编号、货架名称、存放的商品信息等属性。每个节点可以有多个子节点,表示货架的分区。 ```c++ struct Shelf { int id; std::string name; std::vector<Commodity> products; std::vector<Shelf> subShelfs; }; ``` 接下来,可以定义一个树类来管理货架信息。在树类,可以实现货架的增加、删除、修改、查询等操作。 ```c++ class ShelfTree { public: ShelfTree(); ~ShelfTree(); void addShelf(int parentId, Shelf newShelf); //在parentId指定的货架下添加新货架 void removeShelf(int shelfId); //移除指定的货架 void modifyShelf(int shelfId, Shelf newShelf); //修改指定的货架信息 Shelf* searchShelf(int shelfId); //查找指定的货架 private: Shelf* root; //根节点 void traverseShelf(Shelf* node); //遍历货架 }; ``` 在ShelfTree类,可以实现以下方法: 1. addShelf方法:在指定的货架下添加新货架。首先需要查找指定的货架,如果找到了,则在该货架下添加新货架;如果没找到,则添加失败。 2. removeShelf方法:移除指定的货架。需要先找到指定的货架,然后移除该节点以及它的所有子节点。 3. modifyShelf方法:修改指定的货架信息。需要先找到指定的货架,然后修改该节点的数据。 4. searchShelf方法:查找指定的货架。需要在树进行遍历,查找指定的货架。 5. traverseShelf方法:遍历货架。可以使用前序、序、后序遍历等方式。 以上是一个简单的商品货架管理数据结构的实现思路,具体的实现可以根据实际需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值