创建一个带头节点的链表并把链表的逆序(递归法),链表遍历
- #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);
- }