typedef struct _A{UINT a;
UINT b;
char c[64];
char d[64];
}ACList<A,A&> mylist;
// 通过一个循环,现在 mylist中填满了数据,就是很多 A类型的结构。现在要把链表 mylist 中的每个 A 比较下, 如果里面 A1.c = A2.c 而且 A1.d = A2.d那么就认为A1,A2 是同类,把他们单独拿出来。看有多少个同类。比如: 如果找到4个, A1,A2,A3,A4, 他们的成员 c 都一样(A1.c=A2.c=A3.c=A4.c),成员d 都一样(A1.d=A2.d=A3.d=A4.d),那么这4个是一类。mylist 有多少这样的类别? 分别是谁(主要是知道其c 和d,因为他们有两个或两以上的A结构有相同的c和d)这算法怎么写?
谢谢。是否应该不用CList ,我用CList 把这些A装进来,却发现没有比较函数或查找函数。

解决方案 »

  1.   

    创建一个新类别List循环,原List第一个元素加入到新类别List头, 第二个开始比较,如果不同,加入到新类别List
    如果相同,下一个原List循环一次,类别List中元素个数会增加
      

  2.   


    谢谢,
    其实我的目的是为了找相同的,就是原来LIST中如果有两个或两个以上相同类别的元素存在,就是我感兴趣的。记录下来。那么你的方法中被剔除的才是我想要的。问题是,被剔除的还要继续跟下面的比较。莫非再加一个list?
    本来觉得应该不难,结果今天花了时间下班都没想好,气死。
      

  3.   


    谢谢,
    其实我的目的是为了找相同的,就是原来LIST中如果有两个或两个以上相同类别的元素存在,就是我感兴趣的。记录下来。那么你的方法中被剔除的才是我想要的。问题是,被剔除的还要继续跟下面的比较。莫非再加一个list?
    本来觉得应该不难,结果今天花了时间下班都没想好,气死。新类别List里面保存的就是,每类只保存一个,如果需要记录数量,再加一个同步的int List即可比较用字符串 strcmp之类的来做就可以了
      

  4.   


    谢谢,
    其实我的目的是为了找相同的,就是原来LIST中如果有两个或两个以上相同类别的元素存在,就是我感兴趣的。记录下来。那么你的方法中被剔除的才是我想要的。问题是,被剔除的还要继续跟下面的比较。莫非再加一个list?
    本来觉得应该不难,结果今天花了时间下班都没想好,气死。如果新类别List里面没有,就加到新类别List,已经有的话就不用管这个了,循环处理下一个剔除是因为在新类别里面已经有了