数据结构课设,求哪位大神知道她的番号解答一下,这要怎么做

数据结构课设求大神_数据结构吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:36,736贴子:
数据结构课设求大神收藏
数据结构_编程实现希尔、快速、堆、归并四种排序算法,并计算每种算法的比较。要求待排序数据从磁盘文件读入,实施排序后将数据写入另一个文件。跪求大神帮忙
大神,你做过集合吗
可以加我 我可以做
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或数据结构课程设计,求大神助攻_百度拇指医生
&&&网友互助
?数据结构课程设计,求大神助攻
拇指医生提醒您:该问题下为网友贡献,仅供参考。
1、顺序表的应用(1).对于顺序存储的线性表,请实现以下功能:1)实现二路归并排序算法。2)实现快速排序算法。3)实现堆排序算法。4)实现冒泡排序和选择排序算法(2).已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。要求:线性表元素个数n很大,而值为item的数据元素个数很少,要求移动元素个数尽量少;删除后的数组元素与原数组元素不必保持顺序一致。(3).编写一个主函数,调试上述算法。注:需要额外设计一个线性表初始化的函数。(4). 对上述五个排序算法,使用两个长度为一千万的线性表分别测试其性能,记录其运行时间(生成线性表的时间不计算在内)。第一个:线性表内的元素值随机生成;第二个:线性表的第i个元素值为i,即本来就有序。2、链表的应用(1).假设有两个按元素值递增次序排列的线性表A和B,均以单链表形式存储,里面的大部分元素对应相等,请删除一些元素(A中有而B中没有,或B中有而A中没有),使得两个有序表中保留下来的元素对应相等。比如,A中元素为(1,3,5,7,8,10,13,18),B中元素为(1,3,6,8,9,10,13,15),则删除元素后A、B里的元素为(1,3,8,10,13)。(2).猴子选大王。n只猴子围成一圈,从1到m报数,报m的猴子出局。余下的猴子从第m+1只开始继续从1到m报数,报m的猴子出局。第n只猴子报数后,第1只猴子接着报数(因为围成了圈)。待整个圈只剩下一只猴子时,该猴子即为大王。n和m由用户输入,请输出当选大王的猴子的编号。(3).设有一头指针为L的带有表头结点的非循环双向链表,其每个结点中除有prev(前驱指针),data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。(4).对于稀疏矩阵的存储,可不使用二维数组来存储,而使用链表,只存储其中的非0元素。链表中的每个结点包含的域为(行,列,值, next),如以下稀疏矩阵:
则链表为:请实现两个稀疏矩阵的相加,并输出结果。要求:相加后原来的两个矩阵仍然存在。(5).在主函数中设计一个简单的菜单,分别调试上述算法
数据结构课程设计,求大神助攻你这个怎么说,我,才好帮到你嗯知道的的意思
向医生提问
完善患者资料:*性别:
为您推荐:
您可能关注的推广
* 百度拇指医生解答内容由公立医院医生提供,不代表百度立场。
* 由于网上问答无法全面了解具体情况,回答仅供参考,如有必要建议您及时当面咨询医生数据结构的课程设计是让做什么啊,哪位大神有没有范例_百度知道数据结构课作业,渣渣跪求大神相助!!!_c吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:81,679贴子:
数据结构课作业,渣渣跪求大神相助!!!收藏
这个程序的问题是,我想实现这样的功能:(1)建立一棵二叉树。(2)前序、中序、层次非递归遍历该二叉树。(3)判断该二叉树是否为二叉排序树。(4)如果是二叉排序树,进行结点的插入或删除。(5)输出结果。代码都是拼凑出来的,第四第五个功能运行的时候出了错,不懂该改怎么修改。渣渣跪求大神拯救!!!代码如下:#include&iostream&
#include&queue&
#include&stack&
//二叉树结点的描述
typedef struct BiTNode
struct BiTNode *lchild, *//左孩子 右孩子}BiTNode,*BiTree,*PBiTN
int IsSearchTree(const BiTree T)
//递归遍历二叉树是否为二叉排序树
//空二叉树情况
else if(!(T-&lchild) && !(T-&rchild))
//左右子树都无情况
else if((T-&lchild) && !(T-&rchild))
//只有左子树情况
if(T-&lchild-&data&T-&data)
return IsSearchTree(T-&lchild);
else if((T-&rchild) && !(T-&lchild))
//只有右子树情况
if(T-&rchild-&data&T-&data)
return IsSearchTree(T-&rchild);
//左右子树全有情况
if((T-&lchild-&data&T-&data) || (T-&rchild-&data&T-&data))
return ( IsSearchTree(T-&lchild) && IsSearchTree(T-&rchild) );
bool search_BiTree(BiTree T,int key,BiTree parent,BiTree &p)
//查找关键字key{
//如果T为NULL,则查找不成功
//这里包含了树空,即T为NULL的情况
//否则,继续查找
if(key == T-&data)
//如果相等,则查找成功
else if(key & T-&data)
//在左子树中递归查找
return search_BiTree(T-&lchild,key,T,p);
//在右子树中递归查找
return search_BiTree(T-&rchild,key,T,p);
bool insert(BiTree &T,int key)
//插入关键字key{
if(!search_BiTree(T,key,NULL,p))
//如果查找失败,则执行插入操作
//为新节点分配空间,并对各域赋值
BiTree pNew = (BiTree)malloc(sizeof(BiTNode));
pNew-&data =
pNew-&lchild = pNew-&rchild = NULL;
//如果树空,则直接置pNew为根节点
else if(key & p-&data)
//作为左孩子插入p的左边
p-&lchild = pN
//作为右孩子插入p的右边
p-&rchild = pN
void delete_BiTNode(BiTree &p)
BiTree q,s;
if(!p-&lchild)
//如果左子树为空,则只需重接其右子树
//这里包含了左右子树均为空的情况
else if(!p-&rchild)
//如果右子树为空,则只需重接其左子树
//如果左右子树都不为空,我们采取第一种方法来重接左右子树,
//我们这里采取修改左子树的方法,也可以修改右子树,方法类似
//取待删节点的左节点
//一直向右,最终s为待删节点的前驱节点
//如果将各节点元素按从小到大顺序排列成一个序列,
//则某节点的前驱节点即为序列中该节点的前面一个节点
while(s-&rchild)
s-&rchild = p-&
//将p的右子树接为s的右子树
//将p的左子树直接接到其父节点的左子树上
bool delete_BiTree(BiTree &T,int key)
//删除关键字key{
//不存在关键字为key的节点
if(key == T-&data)
//查找到关键字为key的节点
delete_BiTNode(T);
//执行删除算法
else if(key & T-&data)
//继续查找左子树
return delete_BiTree(T-&lchild,key);
//继续查找右子树
return delete_BiTree(T-&rchild,key);
void CreateBiTree(BiTNode **root)
//按先序遍历创建二叉树
二级指针作为函数参数
//要输入的数据
scanf(&\n%c&, &ch);
if(ch=='#')
//输入的数据为空格
*root = NULL;
//输入的数据不为空
*root = (BiTNode *)malloc(sizeof(BiTNode));
//动态分配空间
(*root)-&data =
printf(&请输入%c的左孩子:&,ch);
CreateBiTree(&((*root)-&lchild));
printf(&请输入%c的右孩子:&,ch);
CreateBiTree(&((*root)-&rchild));
void PreOrder_Nonrecursive(BiTree T)
//先序遍历的非递归
stack&BiTree&
声明一个栈变量s,它所存放的类型是BiTree
s.push(T);
//根先进栈
cout&&T-&data&&&
//遍历左子树
while(!s.empty())
BiTree temp = s.top()-&
// 栈顶元素的右子树
// 弹出栈顶元素
while(temp)
// 栈顶元素存在右子树,则对右子树同样遍历到最下方
cout&&temp-&data&&&
s.push(temp);
temp = temp-&
void InOrderTraverse(BiTree T)
// 中序遍历的非递归
stack&BiTree&
BiTree curr = T-&
// 指向当前要检查的节点
s.push(T);
while(curr != NULL || !s.empty())
while(curr != NULL)
// 一直向左走
s.push(curr);
curr = curr-&
curr = s.top();
cout&&curr-&data&&&
curr = curr-&
void in_traverse(BiTree T)
if(T-&lchild)
in_traverse(T-&lchild);
printf(&%d &,T-&data);
if(T-&rchild)
in_traverse(T-&rchild);
int main(void)
BiTNode *root=NULL; //定义一个根结点 printf(&请建立二叉树并输入二叉树的根节点(结点为空时请输入#):&);
CreateBiTree(&root);printf(&非递归先序遍历二叉树:&);
PreOrder_Nonrecursive(root);
printf(&\n&);
printf(&非递归中序遍历二叉树:&);
InOrderTraverse(root);
printf(&\n&);
int flag=1; flag=IsSearchTree(root);if(flag) {printf(&这棵树是二叉排序树!&);printf(&请输入将要插入的结点:&);scanf(&%d&,&key);
if(insert(root,key))
printf(&插入成功,插入后的中序遍历结果:&); InOrderTraverse(root);
//in_traverse(root);
printf(&\n&);
printf(&插入失败,该二叉排序树中已经存在整数%d\n&,key);
//删除给定的整数
printf(&请输入要删除的整数:&);
scanf(&%d&,&key);
if(delete_BiTree(root,key))
printf(&删除成功,插入后的中序遍历结果:&);InOrderTraverse(root);
//in_traverse(root);
printf(&\n&);
printf(&删除失败,该二叉排序树中不存在整数%d\n&,key);
}else printf(&这棵树不是二叉排序树!&);return 0;
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或数据结构课设一元多项式乘法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据结构课设一元多项式乘法
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩18页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 哪位大神有岛国的网站 的文章

 

随机推荐