| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1774 人关注过本帖
标题:求交集?
只看楼主 加入收藏
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
 问题点数:0 回复次数:5 
求交集?

我编了个求交集的程序 大意如下:(但是有错)

class LIST

{........................};

class Set { private: LIST lista; 链表a LIST listb; 链表b LIST listc 链表c(用来放交集的数据); public: void jiaoset(LIST &l1,LIST & l2) 这个是不是这样写啊?? { NODE * l1; NODE * l2; NODE * l3; l1=lista.HEAD; 这个我就不知道怎么写了,请教了 l2=listb.HEAD; 意思是 把指针l1指向lista的头节点 l3=listc.HEAD; 但是我不知道是不是这样写的? while(l1!=0) HEAD不是函数,是类LIST的private { while(l2!=0) { if(l1->DATA=l2->DATA) { l3.push(l1->DATA); } else { l2=l2->NEXT; } } l1=l1->NEXT; } };

就是这里错了。请帮帮忙把!如果不清楚的话我府上 整个程序

-----------------

尽善尽美

[此贴子已经被作者于2004-10-14 20:45:16编辑过]

搜索更多相关主题的帖子: LIST 链表 NODE 交集 HEAD 
2004-10-14 20:44
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

附上 整个程序,链表LIST已经正确(经过测试的),只是在 Set中出现了问题!

#include<iostream.h> class NODE { friend class LIST; NODE * NEXT; float DATA; }; class LIST { private: NODE *HEAD; public: LIST() { HEAD=0; } void push(float Data) { NODE *P=new NODE; P->DATA=Data; if(HEAD==0) { P->NEXT=0; HEAD=P; } else { P->NEXT=HEAD; HEAD=P; } } void display() { NODE *m; m=HEAD; float b; while(m!=0) { b=m->DATA; cout<<b<<" "; m=m->NEXT; } } }; class Set { private: LIST lista; LIST listb; LIST listc; public: void jiaoset(LIST &l1,LIST & l2) { NODE * l1; NODE * l2; NODE * l3; l1=lista.HEAD;

l2=list.HEAD; l3=list.HEAD; while(l1!=0) { while(l2!=0) { if(l1->DATA=l2->DATA) { l3.push(l1->DATA); } else { l2=l2->NEXT; } } l1=l1->NEXT; } }; int main() { LIST A; LIST B; LIST C; Set D; float i; cout<<"press enter A:"; while(cin>>i,i!='CR') { A.push(i); } A.display(); cout<<endl; cout<<"press enter B:"; while(cin>>i,i!='CR') { B.push(i); } B.display(); D.jiaoset(A,B); C.display(); return 0; }

编译的时候总是出现这个问题

:\程序\STE.cpp(131) : fatal error C1004: unexpected end of file found Error executing cl.exe.

STE.obj - 1 error(s), 0 warning(s)

唉,都不知道该怎么办了??


2004-10-14 21:05
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-14 22:14
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

斑竹 ,我看 了,那个程序,但是我讨厌用数组,

我还是喜欢 链表,还是麻烦你看看把!!

对你来说 不是很难的!!

谢谢 了!!

[此贴子已经被作者于2004-10-14 22:23:10编辑过]


2004-10-14 22:21
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

#include<iostream.h> class NODE { friend class LIST; NODE * NEXT; float DATA; };

class LIST { private: NODE *HEAD; public: LIST() { HEAD=0; } void push(float Data) { NODE *P=new NODE; P->DATA=Data; if(HEAD==0) { P->NEXT=0; HEAD=P; } else { P->NEXT=HEAD; HEAD=P; } } void display() { NODE *m; m=HEAD; float b; while(m!=0) { b=m->DATA; cout<<b<<" "; m=m->NEXT; } } };

class Set { private: LIST lista; LIST listb; LIST listc; public: void jiaoset(LIST &l1,LIST & l2) { NODE * l1; NODE * l2; NODE * l3; l1=lista.HEAD;

l2=list.HEAD; l3=list.HEAD; while(l1!=0) { while(l2!=0) { if(l1->DATA=l2->DATA) { l3.push(l1->DATA); } else { l2=l2->NEXT; } } l1=l1->NEXT; } } // 这里的括号漏掉了,另外,你的程序大错特错。私有成员怎么可以直接操作呢?程序中的逻辑也不对。 };

int main() { LIST A; LIST B; LIST C; Set D; float i;

cout<<"press enter A:"; while(cin>>i,i!='CR') { A.push(i); } A.display(); cout<<endl; cout<<"press enter B:"; while(cin>>i,i!='CR') { B.push(i); } B.display(); D.jiaoset(A,B); C.display(); return 0; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-14 23:46
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

多谢 斑竹提醒,本人 奋斗一夜 终于搞定!

太谢谢斑竹了!!

程序如下:

#include<iostream.h> class NODE { friend class LIST; friend class Set; NODE * NEXT; float DATA; }; class LIST { private: NODE *HEAD; public: LIST() { HEAD=0; } NODE *GET_HEAD() { return(HEAD); } void push(float Data) { NODE *P=new NODE; P->DATA=Data; if(HEAD==0) { P->NEXT=0; HEAD=P; } else { P->NEXT=HEAD; HEAD=P; } }

void pop(float Data) { NODE * q; NODE *n; q=HEAD; while(q!=0) { if(q->NEXT->DATA==Data) { n=q->NEXT; q->NEXT=n->NEXT; delete n; break; } else q=q->NEXT; } }

void display() { NODE *m; m=HEAD; float b; while(m!=0) { b=m->DATA; cout<<b<<" "; m=m->NEXT; } } }; class Set { private: LIST list; public:

void jiaoji(LIST & A,LIST &B,LIST &C) { NODE *a; NODE *b; NODE *c; a=A.GET_HEAD(); b=B.GET_HEAD(); c=C.GET_HEAD(); c=0; while(a!=0) { b=B.GET_HEAD(); while(b!=0) { if(a->DATA==b->DATA) { C.push(a->DATA); b=0; } else { b=b->NEXT; } } a=a->NEXT; } } };

int main() { LIST A;

LIST B; LIST C; Set D; float i; cout<<"press A:"; while(cin>>i,i!=0) { A.push(i); } cout<<"the set A is:"; A.display(); cout<<endl; cout<<"press B:"; while(cin>>i,i!=0) { B.push(i); } cout<<"the set B is:"; B.display(); cout<<endl; D.jiaoji(A,B,C); if(C.GET_HEAD()==0) cout<<"the jiaoji is:"<<"NULL"; else cout<<"the jiaoji is:"; cout<<endl; C.display(); return 0; }


2004-10-15 12:03
快速回复:求交集?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017199 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved