Description: #include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int M=10
typedef int Type
typedef struct Node{
Type data
struct Node* next
}Node
void add_elem(Node**head,Type data){
Node* tmp = (Node*)malloc(sizeof(Node))
tmp->data = data
tmp->next = (*head)
*head = tmp
}
void print_list(Node*head){
while(head){
printf(“ d “, head->data)
head = head->next
}
printf(“\n”)
}
void reverse_list(Node**head){
if(!*head)//如果(*head)==NULL
return
Node*p1,*p2
p1 =*head
p2 = (*head)->next
if(!p2)//如果没有下一个节点
return
reverse_list(&p2) //同时存在两个节点就要进行翻转
p1->next->next = p1
p1->next = NULL //主要是保证,第一个节点指向NULL
(*head) = p2
}
int main(){
Node*head = NULL
for(int i=0 i<M i++)
add_elem(&head, rand() 100)
print_list(head)
reverse_list(&head)
print_list(head)
}
To Search:
File list (Check if you may need any files):
record.doc