问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单链表 递归算法

发布网友 发布时间:2022-05-03 01:37

我来回答

1个回答

热心网友 时间:2022-06-29 03:59

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*
用递归的方法创建单链表(整形数字)
并且判断单链表是否递增有序
求单链表的最大值
*/

//结点
struct Node
{
int data;
Node *pNext;
};

//递归创建单链表
int MaxNodeNumber = 10;
void CreateList(Node **pWork)
{
static int Count = 0;

(*pWork) = new Node();
(*pWork)->data = rand();//使用随机数 判断非递增
//(*pWork)->data = Count;//使用序号 判断递增
(*pWork)->pNext = NULL;
Count++;
if ( Count < MaxNodeNumber )
{
CreateList(&((*pWork)->pNext));
}

return;
}

//输出链表
void PrintList(Node *pWork)
{
printf("Head->");
while ( pWork != NULL )
{
printf("[%d]->",pWork->data);
pWork = pWork->pNext;
}

printf("NULL\n");
}

//递归删除单链表
void DestroyList(Node *pWork)
{
if ( NULL != pWork )
{
if ( pWork->pNext != NULL )
{
DestroyList(pWork->pNext);
}
delete pWork;
pWork = NULL;
}
}

//递归判断单链表是否递增有序
bool TestIsAscending(Node *pWork)
{
//中间结点
if ( pWork != NULL && pWork->pNext != NULL)
{
bool Current = pWork->data < pWork->pNext->data;

return Current && TestIsAscending(pWork->pNext);
}
else
{
return true;
}
}

//递归求最大值
int GetMaxValue(Node *pWork)
{
if ( pWork != NULL && pWork->pNext != NULL )
{
int MaxNextValue = GetMaxValue(pWork->pNext);
if ( pWork->data > MaxNextValue )
{
return pWork->data;
}
else
{
return MaxNextValue;
}
}
else if ( pWork->pNext == NULL )
{
return pWork->data;
}
}

void main(void)
{
Node *pHead = NULL;

srand(time(NULL));

CreateList(&pHead);

PrintList(pHead);

if ( TestIsAscending(pHead) )
{
printf("是递增\n");
}
else
{
printf("不是递增\n");
}

printf("最大值为 = %d\n",GetMaxValue(pHead));

DestroyList(pHead);

fflush(stdin);
getchar();
}
单链表就地逆置有几种方法

1.用递归算法,对于不带头结点的单链表(a1,a2,a3,a4,a5,a6)逆置后的结果为(a6,a5,a4,a3,a2,a1)考虑递归算法,若只有一个结点,则直接返回,若存在两个结点(a1,a2)则需要做的操作有:a2-&gt;next=a1;a1-&gt;next=NULL;return a2;a2即新的头结点,若有三个结点,则应先将子链(a2,a3)先...

非结构化数据如何可视化呈现?

通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...

写一个递归算法来计算并返回链表的长度。

【答案】:(1)数据结构 采用不带头结点的单链表定义。(2)算法 int length(LinkList llist){ /*计算单链表llist的长度*/ if(llist==NULL)return 0;return 1+length(llist->link);} (3)代价分析 该算法访问每个结点各一次,故时间代价为O(n)。学会用递归的思想分析问题,编写递归函数在许多...

...的都是整型数据,试写出实现下列运算的递归算法:

s=i=0;while(f-&gt;next!=NULL){ i++;if(i==1)max=f-&gt;data;if(f-&gt;data&gt;max)max=f-&gt;data;s+=f-&gt;data;f=f-&gt;next;} printf("%d%d%d",max,i,s/i);

C++:递归算法实现二进制正整数各个bit位排序存储(单链表),急求~~

void add_1(Node &amp; L){ //引用传参 if(L.num==0){ L.num++;}else{ L.num=0;if(L.next==NULL){ Node *n=malloc(sizeof(Node));L.next=n;n-&gt;num=0;n-&gt;next=NULL;} add_1(L.next); //L.next指示下一个节点 } } 你试试看 ...

单链表 在递增有序单链表中插入元素并保持递增有序

1用递归算法对int型数组进行双向选择排序#include&lt;stdio.h&gt; void paixu(int x[],int m,int n){ int max,min,e,q,l=m,k=m;if(m&gt;=n) return;max=x[m];for(e=m;e&lt;=n;e++){ if(x[e]&gt;max) {l=e;max=x[e];} } q=x[n];x[n]=x[l];x[l]=q;min=x[m];for(e=m...

王炸!算法可视化功能全面上线,包括递归算法可视化!

可视化面板主要分为以下几个部分,展示算法执行的全过程。例如,单链表成环算法的可视化,二叉树的「拉平」算法执行过程,以及递归算法的可视化。递归算法可视化是此次更新的一大亮点,能帮助你直观理解递归算法执行过程。递归过程通过交互式页面展现,用户可自行控制动画,查看每一步代码执行情况及算法当前状态。

数据结构与算法大学没学明白的来

单链表(带头结点、不带头结点)设计与实现(增删改查),双链表设计与实现 栈设计与实现(数组和链表),队列设计与实现(数组和链表)二又树概念学习,二又树前序、中序、后序遍历递归、非递归实现 ,层序遍历 二又排序树设计与实现(插入删除)堆(优先队列、堆排序)AVL(平衡)树设计与实现(四种自旋方式理解...

关于数据结构的问题,用C语言描述

其中,单链表的归并算法、循环链表的归并算法、双向链表及双向循环链表的插入和删除算法等都是较为常见的考查方式。此外,近年来在不少学校中还多次出现要求用递归算法实现单链表输出(可能是顺序也可能是倒序)的问题。在链表的小题型中,经常考到一些诸如:判表空的题。在不同的链表中,其判表空的方式是不一样的,请...

求数据结构试题…重点

1、单链表:单链表定义、相应操作的实现、单链表的游标类。要点:单链表的两种定义方式(复合方式与嵌套方式)。单链表的搜索算法与插入、删除算法。单链表的递归与迭代算法 2、循环链表:单链表与循环链表的异同3、双向链表:双向链表的搜索、插入与删除算法、链表带表头结点的优点4、多项式的链接表示第四章 栈与队列1...

c++ 单向链表和双向链表有什么区别?各自有什么优缺点?

1、双向链表:有两个指针,一个指向前一个节点,一个后一个节点。2、优点:可以找到前驱和后继,可进可退;3、缺点:增加删除节点复杂,多需要分配一个指针存储空间。4、适用于需要双向查找节点值的情况。单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序...

逆序输出单链表的递归算法 写出单链表递归遍历算法 单链表逆置递归 反转单链表递归 单链表的遍历算法 java单链表反转递归 单链表的算法 单链表的就地逆置算法 java递归实现单链表反转
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7不能浏览网页,但用搜狗浏览器高速模式能上网,兼容就不行???求 ... ...64位 IE浏览器无法打开网页 搜狗浏览器可以打开 类似的新窗口网页都... 千牛工作台子账号怎么开权限?子账号的安全设置在哪里? 千牛怎么设置子账号-千牛设置子账号步骤 怎么把CD里的歌曲改成MP3格式? ...戴眼镜吗?想给孩子去检查一下,哪里比较推荐,渭南这块的 Windows Media Player将CD音乐转换为MP3 最简单的方法将CD转换为MP3音频文件(一步一步教你将CD音乐转换为MP3格 ... 孩子最近视力下降了有可能是近视吗?渭南哪里可以免费检查视力啊 奥运会跳远世界纪录 C语言单链表算法问题 单链表的排序算法,哪位大师麻烦您说一哈,感激不尽! 数据结构关于单链表算法问题 C语言 头插法的链表该如何建立 算法是什么? 麻烦各位兄弟讲一下 小弟实在理解不了 请教关于尾插法建立单链表的算法 数据结构 单链表 算法 基于链表的算法分析 求助大神单链表算法题 三个关于链表的算法问题,分别是排序,插入和倒序 编写链表算法 求几个有关链表的最基本算法 苏州市所有品牌车的4s店地址和联系方式? 梦见帮她人找到了要找的人 女朋友对你说男同事帮她滴眼药水是何意? 老友记中,瑞秋不要滴眼药水,结尾被莫妮卡一帮人按住强滴的那是哪集? 茶的主要成份是什么? 绿茶和黄茶的主要区别有哪些? 白山黄茶有用吗 给别人上眼药是什么意思? 茶的成分都有哪些? 链表算法题 单链表排序的算法 数据结构 单链表初始化算法 javaScript,怎么读写Cookie? javascript中cookie怎么用 javascript 写入和读取cookie javascript 求怎么写入和查看cookies javascript如何读cookie 《万恩千爱》的原唱完整版是什么? 漳州光华学校感恩父母歌表演这个视频,由妈妈,我爱你,父亲这两首歌,最后的纯音乐是什么歌曲? 《万恩千爱》的原唱 是王琪吗? 重庆和成都哪个繁华 歌曲《万恩千爱》原唱是谁? 重庆繁华还是泉州繁华? 成都繁华还是重庆繁华? 求万恩千爱简谱 重庆繁华还是南宁繁华? 下载王琪的万恩千爱谢谢 万恩千爱的原唱是王琪吗? 重庆和成都,哪个更繁华?