#include <stdio.h>
#include <malloc.h>
//声明一个结构体,并取别名
typedef struct LNode{
int data;
struct LNode*next;
}LNode,*LinkList;
//初始化
bool InitLink(LinkList &L){
L=(LNode*)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next=NULL;
return true;
}
//使用头插法输入内容
LinkList ScanfLink(LinkList &L){
InitLink(L);
int x;
LNode*s;
scanf("%d",&x);
while(x!=-1){
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
//带头节点链表内容打印输出
void PrintList(LinkList &L){
printf("链表内容为:\n");
LNode*p=L;
while(p->next!=NULL){
p=p->next;
printf("%d ",p->data);
}
printf("\n");
}
//带头节点链表翻转
LinkList Reverse(LinkList &L){
if(L==NULL)
return NULL;
LNode*p;
p=L->next;
LinkList Lnew;
InitLink(Lnew);
LNode*q;
while(p!=NULL){
q=(LNode*)malloc(sizeof(LNode));
q->data=p->data;
p=p->next;
q->next=Lnew->next;
Lnew->next=q;
}
PrintList(Lnew);
return Lnew;
}
int main()
{
LinkList L;
ScanfLink(L);
PrintList(L);
Reverse(L);
return 0;
}
使用头插法将单链表翻转
最新推荐文章于 2024-10-08 12:29:23 发布