数据结构大题
线性表
四、已知一个单向链表,试给出复制该链表的算法。
要求:1、定义线性表的节点的结构以及节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main 函数中进行测试:先构建一个线性表,并定义一个空线性表,然后进行复制。
五、写出从一个带表头的单链表中删除其值等于给定值x 的结点的算法函数:
int delete(LIST &L, int x);如果x 在该链表中,则删除对应结点,并返回其在链表中的位置(逻辑位置,第一个结点的逻辑位置为1),否则返回-1。
要求:1、定义线性表的节点的结构以及节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main 函数中进行测试:先构建一个线性表,然后调用函数删除值等于给定值的节点。
#include
#include
using namespace std;
typedef int elementtype;
struct node{
elementtype element;
node *next;
};
typedef node *LIST;
typedef node *position;
position End(LIST L)//求末尾节点
{
position p=L;
while(p->next!=NULL)
{
p=p->next;
}
return p;
}
void Insert(elementtype x,position p)//插入
{
position q=new node;
q->element=x;
q->next=p->next;
p->next=q;
}
void Delete(position p)//删除
{
if(p->next!=NULL)
{
position q=p->next;
p->next=q->next;
delete q;
}
}
position Locate(elementtype x,LIST L)//定位值为x 的元素
{
position p=L;
while(p->next!=NULL&&p->next->element!=x)
p=p->next;
return p;
}
position MakeNULL(LIST &L)//置空
{
L=new node;
L->next=NULL;
return L;
}
void Print(LIST L)//打印连表中元素
{
position p=L->next;
while(p!=NULL)
{
coutelement
p=p->next;
}
cout
}
void Copy(LIST &L1,LIST L2)
{
position p1=L1;
position p2=L2->next;
while(p2!=NULL)
{
position n =new node;
n->element=p2->element;
n->next=NULL;
p1->next=n;
p2=p2->next;
p1=p1->next;
}
p1=NULL;
}
void Read(LIST &L)
{
position p=L;
cout
int m;
for(;;)
{
position n=new node;
cin>>m;
if(m==-1)
break;
n->element=m;
n->next=NULL;
p->next=n;
p=p->next;
}
}
int deleteElement(LIST &L,int x)
{
position p=L;
int loc=0;
while(p->next)
{
if(p->next->element==x)
{
position q=p->next;
p->next=q->next;
delete q;
return ++loc;
}
++loc;
p=p->next;
}
return -1;
}
int main()
{
LIST L1 = new node;
} L1->next = NULL; LIST L2 = new node; L2->next = NULL; Read(L2); Print(L2); Copy(L1, L2); Print(L1); int n; cout > n; int value = deleteElement(L1, n); if (value == -1){ cerr
树
五、已知非空二叉树T ,写一个算法,求度为2的结点的个数。 要求:
1、定义二叉树的抽象数据类型和型BTREE ,并定义基本操作。
2、编写函数count2(BTREE T),返回度为2的节点的个数。
3、在主函数中,构建一个二叉树,并验证所编写的算法。
六、用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T)。 要求:
1、 定义二叉树的抽象数据类型和型BTREE ,并定义基本操作。
2、 编写函数leafnum(BTREE T),返回树T 的叶子节点的个数。
在主函数中,构建一个二叉树,并验证所编写的算法。
#include
#include
using namespace std;
typedef char datatype;
struct node{
node *lchild;
node *rchild;
datatype data;
};
typedef node*BTREE;
void Empty(BTREE &BT)//置零
{
BT=NULL;
}
bool isEmpty(BTREE BT)//判断是否为空
{
if(BT)
return true;
else
return false;
}
BTREE CreateBT(datatype v,BTREE ltr,BTREE rlr)//左右子树建立二叉树 {
BTREE root;
root->data=v;
root->lchild=ltr;
root->rchild-rlr;
return root;
}
BTREE Lchild(BTREE BT)//返回右子树
{
return BT->lchild;
}
BTREE Rchild(BTREE BT)//返回左子树
{
return BT->rchild;
}
datatype Data(BTREE BT)//返回节点元素
{
return BT->data;
}
void PreOrder(BTREE BT)//先根遍历
{
if(BT)
{
coutdata
PreOrder(BT->lchild);
PreOrder(BT->rchild);
}
}
void InOrder(BTREE BT)//中根遍历
{
if(BT)
{
InOrder(BT->lchild);
coutdata
InOrder(BT->rchild);
}
}
void PostOrder(BTREE BT)//后跟遍历
{
if(BT)
{
PostOrder(BT->lchild);
PostOrder(BT->rchild);
coutdata
}
}
int count2(BTREE BT)//返回度为2的节点的个数 {
if(BT->lchild==NULL&&BT->rchild==NULL) return 0;
if(BT->lchild&&BT->rchild)
return 1+count2(BT->lchild)+count2(BT->rchild); if(BT->lchild&&BT->rchild==NULL)
return count2(BT->lchild);
if(BT->lchild==NULL&&BT->rchild)
return count2(BT->rchild);
}
int leafnum(BTREE BT)//返回叶节点个数
{
static int count=0;
if(BT->lchild==NULL&&BT->rchild==NULL) {
return ++count;
}
else
{
leafnum(Lchild(BT));
leafnum(Rchild(BT));
}
}
void CreateBTREE(BTREE &BT,char *str)//先根输入树 {
char ch;
ch=*str++;
if(ch=='#')
BT=NULL;
else
{
BT=new node; BT->data=ch;
CreateBTREE(BT->lchild,str); CreateBTREE(BT->rchild,str); }
}
int main()
{
BTREE BT=NULL;
char *str="abc##d##ef##g##"; CreateBTREE(BT,str); PreOrder(BT);
cout
InOrder(BT);
cout
PostOrder(BT);
cout
}
cout
相关文章
- 大数据的概念.特征及其应用
- ERP数据质量评估与数据治理方法研究_苏博
- 商业智能技术及应用
- 数据预处理
- 地理信息系统概论--知识点总结
- 指挥信息系统的数据集成研究
- 新老系统迁移及整合方案
- 大数据知识
- 数据仓库的基本架构
- 大数据在计算机信息处理技术中的应用_张莉
马建光等:大数据的概念.特征及其应用 (2013-09-05 16:15:35) 转载▼ 标签: 分类: 学习资料 杂谈 大数据的概念.特征及其应用 马建光,姜巍 (国防科技大学人文与社会科学学院,湖南长沙410074) 源自:国防科技20 ...
ACADEMIC RESEARCHERP数据质量评估与数据治理方法研究 ◆ 苏 博 陈 溯 唐成功 摘要:本文研究了国内企业ERP系统运行过程中所面临的数据质量问题.通过对ERP系统数据质量影响因素的分析,提出了ERP数据质量评估指标体系, ...
商业智能技术及应用 第一章 商业智能 概述 第一章 商业智能概述 企业在生产经营中会产生无数的信息,如订单.库存.交易帐目.通话记录及客户资料等.这些信息蕴藏了丰富的经营理念和市场规律. 怎样有效地利用这些宝贵的信息增进对业务情况的了解,帮 ...
数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理.如对大部分地球物理面积性观测数据在进行转换或增强处理之前,首先将不规则分布的测网经过插值转换为规则网的处理,以利于计算机的运算.另外,对于一些剖面测 ...
地理信息系统概论 第一章 导论 数据与信息的关系: 数据:是通过数字化或记录下来可以可以被鉴别的符号,不仅数字是数据,而且文字.符号.图象也是数据,数据本身没有意义: 信息:是对数据的解释.运用与解算,数据即使是经过处理以后的数据,只有经过 ...
指挥信息系统的数据集成问题研究 刘太庆① 李 光 (61906部队,河北 廊坊 065001) 摘 要: 为了更好地实现指挥信息系统的有效融合,达到各种武器装备的无缝连接,必须解决数据集成问题.简要分析了数据集成的顶层设计和共享环境建设问题 ...
1新老系统迁移及整合方案 本次总局综合业务系统是在原有系统的基础上开发完成,因此,新旧系统间 就存在着切换的问题.另外,新开发的系统还存在与其他一些应用系统,例如,企业信用联网应用系统.企业登记子网站.外资登记子网站等系统进行整合使之成为一 ...
一.搜索"大数据"关键词,查阅有关"大数据"相关资料,写一篇有关"大数据"的认识及其应用的报告. 1.大数据概念: 大数据(big data),或称巨量资料,指的是所涉及的资料量规 ...
数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support).其实数据仓库本身并不 "生产"任何数据,同时自身也不需要"消费"任何的数据,数据来源于外部,并且开 ...
第13卷 第6期2014年12月淮北职业技术学院学报 JOURNALOFHUAIBEIPROFESSIONALANDTECHNICAOLLEGELC Vol.13No.6 Dec.2014 大数据在计算机信息处理技术中的应用 张 莉,汪 伟 ...