递归法实现对单链表的基本操作
来源:互联网 发布:编程语言排名 编辑:程序博客网 时间:2024/06/05 15:25
为了熟悉递归的思想和用法,我采用递归的方式来实现单向链表的基本操作。单向的链表是一种应用指针且比较复杂的数据结构,但是其确实在很多情况下十分好用,在一般情况下递归都可采用迭代的形式实现,迭代的形式虽然相比递归要节省时间和空间,但是代码相对来说要复杂,递归往往只是简单的几句代码,就可以实现较为复杂的功能。以下是基本操作的部分代码:
typedef struct listnode
{
int val;
struct listnode *next;
}List;
/*统计节点个数*/
int count_listnode(List *head)
{
if(head==NULL)
return 0;
else
return count_listnode(head->next)+1;
}
/*顺序打印*/
void fdprint_listnode(List *head)
{
if(NULL != head)
{
printf("%d\t",head->val);
fdprint_listnode(head->next);
}
}
/*反向打印*/
void bkprint_listnode(List *head)
{
if(head != NULL)
{
bkprint_listnode(head->next);
printf("%d\t",head->val);
}
}
/*最大值*/
int max_list(List *head)
{
int max ;
if(head->next==NULL)
max=head->val;
else
{
max=max_list(head->next);
if(head->val>max)
max=head->val;
}
return max;
}
/*最小值*/
int min_list(List *head)
{
int min ;
if(head->next==NULL)
min=head->val;
else
{
min=min_list(head->next);
if(head->val<min)
min=head->val;
}
return min;
}
/*创建链表*/
List* create_list(int *a,int n)
{
List *head ;
if(n==0)
return NULL;
else
{
head=(List*)malloc(sizeof(List));
head->val=a[0];
head->next=create_list(a+1,n-1);
return head;
}
/*输出单向链表奇数结点的值和奇数结点个数*/
int Oddvalue(List *head)
{
int cnt;
if(!head)
{
return 0;
}
else
{
cnt=Oddvalue(head->next);
if(head->val%2)
printf("%d",head->val);
return cnt+head->val%2;
}
- 递归法实现对单链表的基本操作
- 用递归实现对链表的基本操作
- 二叉树的基本操作-递归实现
- 实验2.2 运用单链表实现对数据的基本操作
- *二叉树的基本操作(递归实现)*
- 数据结构 — 二叉树的基本操作(递归实现)
- 数据结构 — 二叉树的基本操作实现(递归算法)
- 二叉树的建立和基本操作(递归实现)
- C语言实现二叉树的递归和非递归算法的基本操作
- C++实现二叉树的基本操作(递归+非递归)
- 二叉树的基本操作实现(递归和非递归)
- 单链表的基本操作实现
- 单链表基本操作的实现
- 单链表的基本操作实现
- 单链表的基本操作实现
- 单链表的基本操作实现
- c#中实现对数据库的基本操作
- C#如何实现对XML文件的基本操作
- while(cin>>word)循环的退出方法
- 类似path登陆的卡片实现
- 最常用标准库函数
- 关于*的2种意义
- php方法自动释放结果集
- 递归法实现对单链表的基本操作
- 从一个用户expdp导出再impdp导入到另一个用户
- Android网络编程之获取网络上的XML
- Matlab下FFT和IFFT的实现
- In-Place Merge Sort(这个描述实在太简单了,我一下子就明白了!不过这算MergeSort吗?算插入排序还差不多)
- JFrame新建窗口实例
- 关于基础视图(以UITextField为例)不响应事件和视图添加后却不出现的几种情况
- 2014年...
- java学习---见面会