空间数据结构程序石家庄经院0618.docx
- 文档编号:3238402
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:24
- 大小:18.66KB
空间数据结构程序石家庄经院0618.docx
《空间数据结构程序石家庄经院0618.docx》由会员分享,可在线阅读,更多相关《空间数据结构程序石家庄经院0618.docx(24页珍藏版)》请在冰豆网上搜索。
空间数据结构程序石家庄经院0618
边长为1的正方形内最接近点的个数计算:
#include
#include
structpoint
{
floatx;
floaty;
};
floatdistance(pointa,pointb);
#include"point.h"
#include
floatdistance(pointa,pointb)
{
returnsqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y));
}
#include
#include
#include
#include"point.h"
floatrandfloat()
{
return1.0*rand()/RAND_MAX;
}
intmain(intargc,char*argv[])
{
inti,j,cnt=0,N=atof(argv[1]);
floatd=atof(argv[2]);
point*a=newpoint[N];
for(i=0;i { a[i].x=randfloat();a[i].y=randfloat(); } for(i=0;i { for(j=i+1;j { if(distance(a[i],a[j]) cnt++; } } cout< return0; } 边长为1的正方形内最接近点的个数计算(ADT): #include #include classpoint { private: floatx; floaty; public: point(); floatX()const; floatY()const; friendfloatdistance(point,point); }; #include"point.h" #include #include #include floatdistance(pointa,pointb) {floatm=b.x-a.x,n=b.y-a.y; returnsqrt(m*m+n*n); } floatpoint: : X()const { returnx; } floatpoint: : Y()const { returny; } point: : point() { x=1.0*rand()/RAND_MAX; y=1.0*rand()/RAND_MAX; } #include #include #include #include"point.h" intmain(intargc,char*argv[]) { inti,j,cnt=0,N=atof(argv[1]); floatd=atof(argv[2]); point*a=newpoint[N]; for(i=0;i { for(j=i+1;j { if(distance(a[i],a[j]) cnt++; } } cout< return0; } 队列(链表): template classquene { structnode{ Itemitem;node*next; node(Itemt) { item=t;next=0; } }; typedefnode*link; linkhead,tail; public: quene(intn); intempty(); voidput(Item); Itemget(); }; #include #include #include"duilie.h" template quene : quene(intn) { head=0;tail=0; } template intquene : empty() { returnhead==0; } template voidquene : put(Itema) { linkt=tail; tail=newnode(a); if(head==0) head=tail; elset->next=tail; } template Itemquene : get() { Itemv=head->item; linkh=head->next; deletehead; head=h; returnv; } #include #include"duilie.cpp" #include intmain(intargc,char*argv[]) { intN=atoi(argv[1]); quene intj; for(inti=0;i { cin>>j; a.put(j); } for(intk=0;k { if(a.empty()) { cout<<"thisduilieisempty"< break; } cout< } } 队列(数组): template classquene { Item*q; intN,head,tail; publick: quene(Nmax); quene(); intempty(): intfull; voidput(Itemitem); Itemget(); } #include #include"duilie.h" template quene : quene { q=newItem[Nmax+1]; N=Nmax+1; head=N;tail=0; } template intquene : empty() { returntail%N==head; } template voidquene : put() { q[tail++]=item; tail=tail%N; } template Itemquene : get() { head=head%N; returnq[head++] } template intquene : full() { ruturn(tail+1)%N==head; } #include #include #include"duilie.cpp" staticconstintM=4; intmain(intargc;charargv[]) { } 后缀运算(栈): #include template classstack { private: Item*s; intN; public: stack(int); voidpush(Itemitem); Itempop(); intempty(); }; #include"zhan.h" #include #include template stack : stack(intNmax) { s=newItem[Nmax]; N=0; } template voidstack : push(Itemitem) { s[N++]=item; } template Itemstack : pop() { returns[--N]; } template intstack : empty() { return(N==0); } #include #include #include #include #include"zhan.cpp" intmain(intargc,char*argv[]) { char*a=argv[1]; intN=strlen(a); stack for(inti=0;i { if(a[i]=='+') s.push(s.pop()+s.pop()); if(a[i]=='-') s.push(-s.pop()+s.pop()); if(a[i]=='*') s.push(s.pop()*s.pop()); if(a[i]=='/') s.push(1/(s.pop()/s.pop())); if((a[i]>='0')&&(a[i]<='9')) s.push(0); while((a[i]>='0')&&(a[i]<='9')) s.push(10*s.pop()+(a[i++]-'0')); } cout< } 连通表(链表表示): #include #include staticconstintV=8;//八个点 structnode { intitem;node*next; node(inta,node*t) { item=a;next=t; } }; typedefnode*link; intmain() { inti,j; linkadj[V]; for(i=0;i adj[i]=0; while(cin>>i>>j) { adj[i]=newnode(j,adj[i]); adj[j]=newnode(i,adj[j]); } for(i=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空间 数据结构 程序 石家庄 0618