您的位置:首页 > 编程语言 > C语言/C++

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: