//尾插法创建单链表
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}LNode,*LinkList;
LinkList CreatList(int n)
{
LinkList H=(LinkList)malloc(sizeof(LNode));
H->next=NULL;
LNode *s,*r=H;
int x;
printf("请输入n个元素:");
for(int i=0;i<n;i++)
{
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&x);
s->data=x;
s->next=NULL;
r->next=s;
r=s;
}
return H;
}
void PrintList(LinkList N)
{
if(N==NULL)
return;
printf("%d ",N->data);
PrintList(N->next);
}
//逆置
LinkList Reverse(LinkList H)
{
LNode *p,*q;
p=H->next;
H->next=NULL;
while(p)
{
q=p;
p=p->next;
q->next=H->next;
H->next=q;
}
return H;
}
void Freelist(LinkList N)
{
LinkList current=N->next;
while(current!=NULL)
{
LinkList next=current->next;
free(current);
current=next;
}
free(N);
}
int main()
{
int n;
printf("请输入元素个数:");
scanf("%d",&n);
LinkList list=CreatList(n);
printf("输出结果:");
PrintList(list->next);
LinkList A=Reverse(list);
printf("\n逆置输出结果:");
PrintList(A->next);
Freelist(list);
Freelist(A);
return 0;
}
尾插法创建与单链表的逆置
最新推荐文章于 2024-07-21 22:48:06 发布