#include<stdio.h>
#include<malloc.h>
typedef int Status;
typedef int ElemType; //假设线性表中的元素均为整型
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*Linklist;
Linklist ListCreat()//初始化一个单链表
{LNode *L;
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
}
Status ListInsert(Linklist &L,int i)//以逐个加入的方式插入
{
LNode *rearPtr,*curPtr;
rearPtr=L;
for(;rearPtr->next!=NULL;)
rearPtr=rearPtr->next;
curPtr=(LNode*)malloc(sizeof(LNode));
curPtr->data=i;
rearPtr->next=curPtr;
rearPtr=curPtr;
rearPtr->next=NULL;
return 0;
}
void ListReverse(Linklist &L)//就地逆置
{LNode *p,*q;
if(0==L->next||0==L->next->next)
;
p=L->next->next;//p指向第二个
L->next->next=NULL;
LNode *w;
while(p!=NULL)
{
q=p->next;//记录q的下一个
w=L->next;// w指第一个
p->next=w;//第一个放到第二个后面
L->next=p;//L后面放第二个
p=q;//p为p的下一个
// 从第二个开始,将第二个,第三个。。。最后一个,依次放到头节点后面
}
}
void ListPrint(Linklist L)//输出
{
LNode *p=L->next;
while(p!=NULL)
{
if(p->next!=NULL)
printf("%d ",p->data);
else printf("%d",p->data);
p=p->next;
}
}
int main()
{
Linklist L;
int n;
scanf("%d",&n);
L=ListCreat();
for(int i=1;i<=n;i++)
ListInsert(L,i);
ListReverse(L);
ListPrint(L);
}
#include<malloc.h>
typedef int Status;
typedef int ElemType; //假设线性表中的元素均为整型
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*Linklist;
Linklist ListCreat()//初始化一个单链表
{LNode *L;
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
}
Status ListInsert(Linklist &L,int i)//以逐个加入的方式插入
{
LNode *rearPtr,*curPtr;
rearPtr=L;
for(;rearPtr->next!=NULL;)
rearPtr=rearPtr->next;
curPtr=(LNode*)malloc(sizeof(LNode));
curPtr->data=i;
rearPtr->next=curPtr;
rearPtr=curPtr;
rearPtr->next=NULL;
return 0;
}
void ListReverse(Linklist &L)//就地逆置
{LNode *p,*q;
if(0==L->next||0==L->next->next)
;
p=L->next->next;//p指向第二个
L->next->next=NULL;
LNode *w;
while(p!=NULL)
{
q=p->next;//记录q的下一个
w=L->next;// w指第一个
p->next=w;//第一个放到第二个后面
L->next=p;//L后面放第二个
p=q;//p为p的下一个
// 从第二个开始,将第二个,第三个。。。最后一个,依次放到头节点后面
}
}
void ListPrint(Linklist L)//输出
{
LNode *p=L->next;
while(p!=NULL)
{
if(p->next!=NULL)
printf("%d ",p->data);
else printf("%d",p->data);
p=p->next;
}
}
int main()
{
Linklist L;
int n;
scanf("%d",&n);
L=ListCreat();
for(int i=1;i<=n;i++)
ListInsert(L,i);
ListReverse(L);
ListPrint(L);
}