#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指向下一个要插入的结点*/
}
}