链表头文件/* linkedlist.h */ #ifndef LINKEDLIST_H #define LINKEDLIST_H typedef struct node *link; struct node { unsigned char item; link next; }; link make_node(unsigned char item); void free_node(link p); link search(unsigned char key); void insert(link p); void delete(link p); void traverse(void (*visit)(link)); void destory(void); void push(link p); link pop(void); #endif
链表的每个节点可以有一个后继,而二叉树的每个节点可以有两个后继,比如
二叉树typedef struct node *link; struct node { unsigned char item; link l,r; };
二叉树可以这样递归定义:
1)就像链表有头指针一样,每个二叉树都有一个根指针指向他,根指针可以是NULL,表示空二叉树。
2)根指针可以指向下一个节点,这个节点除了有数据成员之外还有两个指针域,这两个指针域又分别是另外两个二叉树(左子树和右子树)的根指针。
递归思想美名传。