递归实现链表数据互换,纯不会,明天再说
1、链表实现以下功能
链表,创建链表,申请节点,判空,头插,遍历输出,通过位置查找节点,任意位置插入,头删,任意位置删除,安置查找返回位置,按位置进行修改,按值进行修改,翻转链表,释放链表,链表的排序,反转链表(递归实现)
//link_list.h
#ifndef LINK_LIST_H
#define LINK_LIST_H
#include <myhead.h>
typedef int datatype;
typedef struct Node
{
union
{
int len;
datatype data;
};
struct Node *next;
}Node,*NodePtr;
//创建链表
NodePtr list_create();
//申请结点封装数据的函数
NodePtr apply_node(datatype e);
//链表判空
int list_empty(NodePtr L);
//头插
int list_insert_head(NodePtr L,datatype e);
//链表遍历函数
int list_show(NodePtr L);
//通过位置查找结点
NodePtr list_search_pos(NodePtr L,int pos);
//任意位置插入
int list_insert_pos(NodePtr L,int pos,datatype e);
//链表头删
int list_delete_head(NodePtr L);
//链表任意位置删除
int list_delete_pos(NodePtr L,int pos);
//链表按值查找返回位置
int list_search_retval(NodePtr L,datatype e);
//链表按位置进行修改
int list_updata_pos(NodePtr L,int pos,datatype e);
//按值进行修改
int list_updata_data(NodePtr L,datatype old_e,datatype new_e);
//将链表进行翻转
int list_reserve(NodePtr L);
//释放链表
void list_destroy(NodePtr L);
//链表的排序
int list_sort(NodePtr L);
//链表的翻转(递归函数实现)
NodePtr list_reserve1(NodePtr L);
#endif
//link_list.c
#include "link_list.h"
//创建链表
NodeP