就山请教在链表中如果值相同,如何删除其余的,只是保留一个。
数据结构如下:
//define the struct about student
#ifndef LINKHEAD
#define LINKHEAD
typedef struct STUDENT
{
int num;
char name[10];
struct STUDENT * next;
}Stud;
//typedef Stud *pStud;
#endif
就是如果num和name相同的话,删除其余的,只是保留一个。
在线等待?????
问题点数:20、回复次数:12Top
1 楼property1(lubiao)回复于 2004-11-03 08:45:22 得分 10
没什么好办法 把。
搜索循环搜索链表,
p = head ;
while (p)
{
扫描 p 之后的所有结点
如果 与 p 相同 就删了。
p ++ ;
}
MFC 有Clist 模板
很好用可以考虑。Top
2 楼sungengyu(快乐机器)回复于 2004-11-03 08:48:03 得分 1
插入的时候判断。Top
3 楼fastxyf(迅影)回复于 2004-11-03 09:02:56 得分 1
考虑性能的话,最好先做排序,再找到重复的就方便了
Top
4 楼echoxue(咱当过兵的人)回复于 2004-11-03 12:24:42 得分 0
upTop
5 楼echoxue(咱当过兵的人)回复于 2004-11-03 12:26:30 得分 0
// TODO: Add your control notification handler code here
//p_pri_temp for pri_node
Stud * p_pri_temp=NULL;
//p_next_temp for next_node
Stud * p_next_temp=NULL;
//need to memoery the node
Stud * p_next_mem=NULL;
p_pri_temp=p_head;
if(p_head!=NULL)
{
//set the head point to first node
while(p_pri_temp!=NULL)
{
//the next node point
p_next_temp=p_pri_temp->next;
p_next_mem=p_pri_temp;
while (p_next_temp!= NULL)
{
if(p_pri_temp->num == p_next_temp->num)
{
//point to next node
//p_next_temp = p_next_temp->next;
//p_next_temp = p_next_mem->next;
p_next_mem->next=p_next_temp->next;
p_next_temp=p_next_mem->next;
g_stuNum--;
}
else
{
//move the point to next
p_next_temp = p_next_temp->next;
p_next_mem = p_next_mem->next;
}
}
//move the pri_point to
p_pri_temp = p_pri_temp->next;
}
delete p_pri_temp;
delete p_next_temp;
delete p_next_mem;
OnDoShow();
}
请各位看看,有问题吗,我的算法.可以过滤,过滤后但建立的时候又有问题,??????Top
6 楼oncsdn(青蛙)回复于 2004-11-03 12:31:17 得分 0
为啥不有 CList 呢?Top
7 楼echoxue(咱当过兵的人)回复于 2004-11-03 12:34:38 得分 0
如何使用CList?谢谢!Top
8 楼oncsdn(青蛙)回复于 2004-11-03 12:43:03 得分 8
写STUDENT的如相函数
1. COPY 构造写上
2. = 号重载
注意:上面两个函数的参数为 const 类型的,切记!
然后如下定义:
#include "afxtempl.h"
typedef CList<STUDENT,STUDENT&> CStudentList
就可以了。
如果想用指针,就简单了,上面的函数不用写了,直接定义
#include "afxtempl.h"
typedef CList<STUDENT*,STUDENT*> CStudentPtrList
Top
9 楼oncsdn(青蛙)回复于 2004-11-03 12:44:03 得分 0
如果用 CList 的话,它还有个 Find 功能 :)Top
10 楼echoxue(咱当过兵的人)回复于 2004-11-03 18:01:27 得分 0
to:青蛙
不懂,能再详细点吗.
我还要请教有关在treeView中打开多文档窗口的问题,就是鼠标点tree的结点,打开右面的文档窗口.Top
11 楼echoxue(咱当过兵的人)回复于 2004-11-03 18:33:01 得分 0
upTop
12 楼oncsdn(青蛙)回复于 2004-11-06 14:29:01 得分 0
TO : echoxue(虎子)
==================
QQ 号,我可能就今天和明天在了,以后说不定 :(
Top




