构造一个单链表L,其头结点指针为head,编写程序实现将L逆置

#include<stdio.h> 

#include<stdlib.h> 

#include <malloc.h> 

//

定义存储结构 

typedef struct 

Lnode{ 

int data;  

/*每个元素数据信息*/ 

struct Lnode *next; 

/*后继元素的地址*/ 

} LNode,*LinkList; 

void main() 

void Create_L(LinkList &L,int n); 

void Print_L(LinkList L); 

void ReverseList(LinkList L); 

LinkList La;//

创建单链表La

 int n; 

printf("请输入链表La中的元素个数: "); 

scanf("%d",&n); 

Create_L(La,n);//

printf("现在La中的元素顺序为: "); 

Print_L(La); 

printf("------------------------------------- "); 

ReverseList(La); 

printf("逆置后,La的元素顺序为: "); 

Print_L(La);

void Create_L(LinkList &L,int n) 

int j=1; 

L=(LinkList)malloc(sizeof(Lnode)); 

L->next =NULL;//先建立一个带头结点的单链线性表L 

for(int i=n;i>0;--i) 

LinkList p=(LinkList)malloc(sizeof(Lnode)); 

printf("请输入链表中的第%d个元素: ",j++); 

scanf("%d",&p->data); 

p->next=L->next; 

L->next =p; 

}//(逆序实现) 

/* LinkList q=L; 

 for(int i=1;i<=n;i++)  

LinkList p=(LinkList)malloc (sizeof(Lnode)); 

q->next=p; 

p->next=NULL; 

q=q->next  

printf("请输入链表La中的第%d个元素: ",i); 

 

scanf("%d",&p->data); 

}//(正序实现) 

*/ 

}//

初始化单链表

//

输出单链表

void Print_L(LinkList L) 

LinkList p; 

p=L->next; 

while(p) 

printf("%d ",p->data ); 

p=p->next; 

printf(" "); 

}

void ReverseList(LinkList L) 

LinkList p,q; 

p=L->next; 

L->next=NULL; 

while(p!=NULL) 

q=p->next;

 /*q指针保留p->next得值*/ 

p->next=L->next; 

L->next=p; 

/*将p结点头插入到单链表L中*/ 

p=q; 

/*p指向下一个要插入的结点*/ 

}

原文地址:https://www.cnblogs.com/xufeng123/p/7788463.html