这个学期要学DM&ML,用的是《数据挖掘算法原理与实现》王振武 本着造福同学的思想,开一个DM&ML的笔记系列,打算给书上的源代码添加一点注释,方便阅读和理解
前置知识要求
C++,队列
具体实现
#include "iostream"
#include "time.h"
using namespace std;
struct mem //成员结构体包含符号和一个表示是否是中心点的属性
{
bool isMedoid;
char symbol;
};
struct Node; //队列节点
typedef struct Node * PNode; //队列节点指针
struct Node //队列节点结构体
{
mem info;
PNode link;
};
struct LinkQueue{ //队列数据结构
PNode f;//hiro:队列头
PNode r;//hiro:队列尾
};
typedef struct LinkQueue * PLinkQueue; //队列指针
PLinkQueue createEmptyQueue_link() //创建空队列函数
{
PLinkQueue plqu;
plqu=(PLinkQueue)malloc(sizeof(struct LinkQueue));
if(plqu!=NULL)
{
plqu->f=NULL;
plqu->r=NULL;
}
else
cout<<"Out of space!"<<endl;
return plqu;
}
int isEmptyQueue_link(PLinkQueue plqu) //判断队列是否为空函数
{
return (plqu->f==NULL);
}
void enQueue_Link(PLinkQueue plqu, mem x) //元素入队函数
{
PNode p;
p=(PNode)malloc(sizeof(struct Node));
if(p==NULL)cout<<"Out of space!"<<endl;
else
{
p->info=x;
p->link=NULL;
if(plqu->f==NULL) plqu->f=p;
else plqu->r->link=p;
plqu->r=p;
}
}
void deQueue_link(PLinkQueue plqu) //队列元素出队并打印函数
{
PNode p;
if(plqu->f==NULL)cout<<"Empty Queue"<<endl;
else
{
p=plqu->f;
cout<<p->info.symbol;
plqu->f=p->link;
free(p);
}
}
void showQueue(PLinkQueue pq) //打印出队列并释放队列占用内存空间
{
cout << "{";
while (!isEmptyQueue_link(pq))
{
deQueue_link(pq);
cout << ",";
}
cout << '\b';
cout <<