#include<iostream>
#include<stdio.h>
using namespace std;
#define MAXSIZE 5
#define ERROR -1;
#define CORRECT 1;
typedef struct List{
int data;
struct List *next;
}List;
List *LinkList;
int ShowLinkList(List *L)
{
List *p;
if(!L)
return ERROR;
p=L;
cout<<"您创建的链表"<<endl;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
return CORRECT;
}
void PrintList(List *L)
{
List *p = L;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
}
List *ReverseList(List *L)
{
if(L==NULL||L->next == NULL)
return L;
List *t = NULL,
*p = L,
*q = L->next;
while(q!=NULL)
{
t = q->next;
q->next = p;
p=q;
q=t;
}
//此时q指向原始链表的最后一个元素,也是逆转后的链表的表头元素*、
L->next = NULL;
L = p;
PrintList(L);
return L;
}
List *CreateLinkList(int *number,int n)
{
int j;
List *L,*p,*q;
if(n<=0)
return NULL;
q = new List;
q->data = number[1];
q->next = NULL;
L = q;
p=L;
for(j=2;j<=MAXSIZE;j++)
{
q = new List;
q->data = number[j];
q->next = NULL;
p->next = q;
p=q;
}
return L;
}
int main()
{
int number[100],i,num;
List *p;
cout<<"请输入MAXSIZE个数字:"<<endl;
for(i=1;i<=MAXSIZE;i++)
{
cin >>number[i];
}
LinkList = CreateLinkList(number,MAXSIZE);
ShowLinkList(LinkList);
cout<<" "<<endl;
cout<<"逆序后的链表:"<<endl;
ReverseList(LinkList);
}
创建单链表并原地将链表逆序
猜你喜欢
转载自blog.csdn.net/qq_41795427/article/details/82972717
今日推荐
周排行