数据结构算法集C++语言实现Word格式.docx
- 文档编号:22862373
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:53
- 大小:22.80KB
数据结构算法集C++语言实现Word格式.docx
《数据结构算法集C++语言实现Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构算法集C++语言实现Word格式.docx(53页珍藏版)》请在冰豆网上搜索。
NumItem++;
}
TypeStack<
Pop()
*p;
Typetemp;
temp=top->
data;
p=top;
top=top->
link;
deletep;
NumItem--;
returntemp;
GetTop()
returntop->
boolStack<
ISEmpty()
returntop==NULL;
MakeEmpty()
deletetop;
intStack<
GetNum()
returnNumItem;
//队列数据结构Queue.h//
classQueue;
classQueueNode
friendclassQueue<
QueueNode<
QueueNode(Typed=0,QueueNode*l=NULL):
data(d),link(l){}
template<
classQueue
Queue():
rear(NULL),front(NULL){}
~Queue();
voidEnQueue(Typeitem);
TypeDelQueue();
TypeGetFront();
boolISEmpty(){returnfront==NULL;
}
*front,*rear;
Queue<
~Queue()
while(front!
=NULL)
p=front;
front=front->
voidQueue<
EnQueue(Typeitem)
if(front==NULL)
front=rear=newQueueNode<
(item,NULL);
else
rear=rear->
link=newQueueNode<
TypeQueue<
DelQueue()
*p=front;
Typetemp=p->
GetFront()
returnfront->
//链表数据结构list.h//
classtype>
classlist;
classlistnode
friendclasslist<
type>
typedata;
listnode<
*next;
classlist
list();
~list();
voidinsertend(type);
//向链表尾部插入元素
boolinsert(type,int);
//向链表任意位置插入元素
voiddelnode(inti);
//删除元素
intfind(typeT);
//查找元素
voidmakeempty();
//销毁链表
boolprint();
//打印链表
intgetlen();
//得到链表长度
*first,*last;
intlength;
voidinitlist(type&
tmp);
voidlist_exit(list<
&
L,typetmp);
voidinitation();
voidlist_insertend(list<
intlist<
getlen()
returnlength;
voidlist<
makeempty()
*p1,*p2;
p1=first->
next;
first->
next=NULL;
while(p1!
p2=p1;
p1=p1->
deletep2;
length=0;
insertend(typet)
p=newlistnode<
p->
data=t;
last->
next=p;
last=p;
length++;
boollist<
insert(typet,inti)
p=first;
intk=1;
while(p!
=NULL&
&
k<
i)
p=p->
k++;
if(p==NULL&
k!
=i)
returnfalse;
*tp;
tp=newlistnode<
tp->
next=p->
next=tp;
returntrue;
delnode(inti)
*p,*t;
while(p->
next!
t=p->
cout<
<
"
你已经将数据项"
t->
data<
删除"
endl;
next->
length--;
deletet;
print()
*p=first->
if(length==0)
链表中有"
length<
项数据:
"
while(p)
find(typeT)
inti=1;
while(p&
data!
=T)
i++;
if(p)
returni;
return0;
list<
~list()
deletefirst;
欢迎再次使用(!
^!
)"
list()
*node=newlistnode<
node->
first=last=node;
//图数据结构graph.h//
#include"
Queue.h"
classNameType,classDisType>
classGraph;
structNode
friendclassGraph<
NameType,DisType>
intnum;
DisTypeval;
Node<
*next;
structGpNode
NameTypedata;
classGraph
voidCreat();
//创建图
voidPrintNode();
//打印图中的各个数据项
voidDFS();
//图的深度优先搜索,主过程
voidDFS(intv,intvisited[]);
//子过程
voidBFS();
//图的广度优先搜索,主过程
voidBFS(intv,intvisited[]);
//子过程
voidShortPath();
//求最短路径
GpNode<
*table;
intNumNode;
//节点个数
voidGraph<
Creat()
do
请输入节点个数:
cin>
>
NumNode;
}while(NumNode<
=0);
table=newGpNode<
[NumNode];
请输入各节点数据项"
for(inti=0;
i<
NumNode;
i++)
cin>
table[i].data;
table[i].link=NULL;
请输入各边的关系(如:
AB)"
i=1;
NameTypenodeA,nodeB;
boolfindA,findB;
charISExit;
intm,n;
findA=findB=false;
请输入第"
对边的关系"
nodeA>
nodeB;
for(m=0,n=0;
m<
NumNode&
n<
!
(findA&
findB);
)//查找边的节点
if(nodeA!
=table[m].data)
m++;
findA=true;
if(nodeB!
=table[n].data)
n++;
findB=true;
if(!
findB))
输入的节点数据项有错误"
p=newNode<
next=table[m].link;
num=n;
table[m].link=p;
请输入该对边的权值:
val;
是否继续输入:
y)继续,X)任意键退出"
ISExit;
if(ISExit!
='
y'
ISExit!
Y'
)
break;
}while(true);
PrintNode()
图中各节点数据项:
table[i].data<
DFS()
int*visited=newint[NumNode];
图的深度优先搜索:
visited[i]=0;
for(i=1;
i++)//遍厉孤立节点
DFS(i,visited);
delete[]visited;
DFS(intv,intvisited[])
*t;
if(visited[v]==0)
table[v].data<
visited[v]=1;
t=table[v].link;
while(t!
if(visited[t->
num]==0)
DFS(t->
num,visited);
t=t->
BFS()
图的广度优先搜索:
for(i=0;
BFS(i,visited);
BFS(intv,intvisited[])
int>
q;
intn;
q.EnQueue(v);
while(!
q.ISEmpty())
n=q.DelQueue();
p=table[n].link;
n=p->
num;
if(visited[n]==0)
table[n].data<
visited[n]=1;
//排序算法数据结构Compositor.h//
classCompositor
Compositor():
sort(NULL){}
//创建排序数组
voidBubble();
//冒泡排序
voidInsert();
//插入排序
//快速排序
voidQuick();
voidQSort(int,int);
intPartition(intlow,inthigh);
//归并排序
voidMerge(TypeSR[],TypeTR[],inti,intm,intn);
voidMsort(TypeSR[],TypeTR1[],ints,intt);
voidMergeSort();
//选择排序
voidSelect();
voidPrint();
//打印排序后的结果
protected:
Type*sort;
intleng;
voidCompositor<
输入你需要排序的数据个数:
leng;
while(leng<
=0)
输入数据有误"
sort=newType[leng];
请输入各数据项:
sort[i];
Insert()
Creat();
for(inti=1;
if(sort[i]<
sort[i-1])
temp=sort[i];
for(intj=i-1;
temp<
sort[j]&
j>
=0;
j--)
sort[j+1]=sort[j];
sort[j+1]=temp;
Print();
Bubble()
for(inti=leng-1;
i>
i--)
for(intj=0;
j<
leng-1;
j++)
if(sort[j]>
sort[j+1])
temp=sort[j];
sort[j]=sort[j+1];
Quick()
QSort(0,leng-1);
clas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 C+ 语言 实现