#include <stdio.h>
#include<stdlib.h>
typedef struct Lnode{
int data;
struct Lnode *next;
}lnode;
lnode *head;
lnode *create_Linklist(void){
int data;
lnode *p;
head = (lnode *)malloc(sizeof(lnode));
head->next = NULL;
while (1){
scanf_s("%d", &data);
if (data == 32767) break;
else {
p = (lnode *)malloc(sizeof(lnode));
p->data = data;
p->next = head->next;
head->next = p;
}
}
return (head);
}//头插入法建立单链表。
void PrintfLnode(lnode *L){
lnode *p;
p = L->next;
printf("单链表的值为:");
while (p != NULL){
printf("%d ", p->data);
p = p->next;
}
}//输出单链表
lnode* NizhiLnode(lnode *L){
lnode *head = L;
if (L == NULL || L->next == NULL){
return (head);
}
else{
lnode *p = L->next;
head=NizhiLnode(p);
p->next = L;
L->next = NULL;
return (head);
}
}//递归逆置单链表
void PrintfLnode2(lnode *L){
lnode *p;
p = L;
printf("\n");
while (p->next != NULL){
printf("%d ", p->data);
p = p->next;
}
}
int main(){
lnode *T,*p;
printf("请输入单链表的值:");
T = create_Linklist();
PrintfLnode(T);
printf("\n逆置单链表的值:");
p=NizhiLnode(T);
PrintfLnode2(p);
return 0;
}