创建一个带头节点的链表并把链表的逆序(递归法),链表遍历
#include <stdio.h>
#include <stdlib.h>
/* define structure of linklist */
typedef struct Node
{
int data;
struct Node *next;
}Link,LinkList;
/***********************************************************
Function : create
Description : create a linklist
Parameter : LinkList **L:linklist head,
int n: length of linklist
Return : void
Authot : Puls
************************************************************/
void create(LinkList **L, int n)
{
LinkList *p;
int i;
*L = (LinkList*)malloc(sizeof(Link));
(*L)->next = NULL;
for(i=0; i<n; i++)
{
p = (LinkList*)malloc(sizeof(Link));
p->data = i;
p->next = (*L)->next;
(*L)->next = p;
}
}
/***********************************************************
Function : print
Description : print linklist
Parameter : LinkList **L: linklist head
Return : void
Authot : Puls
************************************************************/
void print(LinkList **L)
{
LinkList *p = (*L)->next;
while(p)
{
printf("%d->", p->data);
p = p->next;
}
}
/***********************************************************
Function : reverseLink
Description : reverse linklist
Parameter : LinkList **L: linklist head,
Return : void
Authot : Puls
************************************************************/
LinkList* reverseLink(LinkList **L)
{
LinkList *p = *L;
if(p==NULL)
{
return;
}
if(p->next!=NULL)
{
reverseLink(&p->next); /* 递归法逆序链表 */
}
}
/***********************************************************
Function : main
Description : program access
Parameter : void
Return :
Authot : Puls
************************************************************/
int main()
{
LinkList *L;
create(&L, 10);
print(&L);
printf("\n");
reverseLink(&L);
printf("%d->", p->data);
}