C语言链表基本函数的递归实现
2010-11-07 11:22
435 查看
/*
* link.h
*
* Created on: Nov 7, 2010
* Author: jenson
*/
#ifndef LINK_H_
#define LINK_H_
typedef int item_type;
typedef struct _link_ * link;
struct _link_{
item_type item;
link next;
};
extern int l_count(link x);
extern void l_traverse(link l,void (*visit)(link));
extern void l_traverse_r(link l,void (*visit)(link));
extern link l_delete(link l,item_type e);
#endif /* LINK_H_ */
/*
* link.c
*
* Created on: Nov 7, 2010
* Author: jenson
*/
#include "link.h"
#include <stdio.h>
int count(link x) {
if (x == NULL) {
return 0;
}
return 1 + count(x->next);
}
void l_traverse(link l, void(*visit)(link)) {
if (l == NULL)
return;
(*visit)(l);
l_traverse(l->next, visit);
}
void l_traverse_r(link l, void(*visit)(link)) {
if (l == NULL) {
return;
}
l_traverse_r(l->next, visit);
(*visit)(l);
}
link l_delete(link l, item_type e) {
if (l == NULL) {
return NULL;
}
if (l->item == e) {
link t = x->next;
free(x);
return t;
}
x->next = l_delete(x->next, e);
return x;
}
本文出自 “有思想的代码” 博客,请务必保留此出处http://wujuxiang.blog.51cto.com/2250829/416754
* link.h
*
* Created on: Nov 7, 2010
* Author: jenson
*/
#ifndef LINK_H_
#define LINK_H_
typedef int item_type;
typedef struct _link_ * link;
struct _link_{
item_type item;
link next;
};
extern int l_count(link x);
extern void l_traverse(link l,void (*visit)(link));
extern void l_traverse_r(link l,void (*visit)(link));
extern link l_delete(link l,item_type e);
#endif /* LINK_H_ */
/*
* link.c
*
* Created on: Nov 7, 2010
* Author: jenson
*/
#include "link.h"
#include <stdio.h>
int count(link x) {
if (x == NULL) {
return 0;
}
return 1 + count(x->next);
}
void l_traverse(link l, void(*visit)(link)) {
if (l == NULL)
return;
(*visit)(l);
l_traverse(l->next, visit);
}
void l_traverse_r(link l, void(*visit)(link)) {
if (l == NULL) {
return;
}
l_traverse_r(l->next, visit);
(*visit)(l);
}
link l_delete(link l, item_type e) {
if (l == NULL) {
return NULL;
}
if (l->item == e) {
link t = x->next;
free(x);
return t;
}
x->next = l_delete(x->next, e);
return x;
}
本文出自 “有思想的代码” 博客,请务必保留此出处http://wujuxiang.blog.51cto.com/2250829/416754
相关文章推荐
- 【c语言】 编写一个函数实现n^k,使用递归实现
- 单向链表基本操作(C语言实现)
- c语言单链表创建(函数传地址实现)
- 数据结构学习之双向循环链表的基本操作(非递归实现)
- 单链表基本操作示例1[C语言实现]
- 【C语言】【面试题】【笔试题】编写一个函数实现n^k,使用递归实现
- C语言:使用链表实现的可变长度字符串处理函数
- 单链表的基本操作大全之C语言实现(二)
- c语言实现双向链表的基本操作
- C语言实现无头链表的基本操作
- 链表的基本操作函数算法(C/C++实现)
- 算法与数据结构-单向链表的基本操作C语言实现
- 【C语言】编写一个函数实现n^k,使用递归实现。
- 【c语言】 编写一个函数reverse_string(char * string)(递归实现)
- 兔子生娃问题---函数递归应用--c语言实现
- c语言实现单链表数据结构及其基本操作
- 双向链表的C语言实现与基本操作(二)
- 单链表的基本操作c语言实现
- C语言实现:函数的递归调用
- 【C语言】编写一个函数实现n^k,使用递归实现