此代码可以正常运行,是实实在在的C语言
分析:尾插法建立,前插法逆置
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
LNode *next;
}LNode,*LinkList;
//创建单链表 尾插法
void CreateList(LinkList &L,int n)
{
LNode *r,*p;
L = new LNode;
L->next = NULL;
r = L;
printf("输入链表元素\n");
for(int i=0;i<n;i++)
{
p = new LNode;
scanf("%d",&p->data);
p->next = NULL;
r->next = p;
r = p;
}
}
//逆转(利用前插法)
void Inverse(LinkList &L)
{
LinkList p,q;
p = L->next;
L->next = NULL;
//前插法
while(p != NULL)
{
q = p->next;
p->next = L->next;
L->next = p;
p = q;
}
}
void Display(LinkList &L)
{
LNode *p;
p = L->next;
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
int main()
{
int n;
LinkList L;
printf("请输入单链表的长度:\n");
scanf("%d",&n);
CreateList(L,n);
printf("逆转后的单链表为:\n");
Inverse(L);
Display(L);
return 0;
}