#include<stdio.h>
#include<stdlib.h>
#define N 10
//定义结构体单元
typedef struct node{
int data;//结构体数据域
struct node* next;//结构体指针域
}ElemSN;
//逆向创建单向链表(头插法)
ElemSN *PreCreatLink(int a[],int n)
{
ElemSN *head=NULL,*p;
for(int i=n-1;i>-1;i--)
{
p=(ElemSN*)malloc(sizeof(ElemSN));
p->data=a[i];
p->next=head;
head=p;
}
return head;
}
//将一个单向链表逆质
ElemSN* PreLink(ElemSN *head)
{
ElemSN *p,*head1=NULL;
while(head)
{
p=head;
head=head->next;
p->next=head1;
head1=p;
}
return head1;
}
//打印链表所有结点的值
void PrintLink(ElemSN* head)
{
ElemSN *p=head;
for(;p;p=p->next)
printf("%5d",p->data);
}
int main(void)
{
ElemSN *head;
int a[N]={1,2,3,4,5,6,7,8,9,10};
head=PreCreatLink(a,N); //头插法创建链表
PrintLink(head); //打印链表结点的值
printf("\n");
head=PreLink(head); //逆置一个链表
PrintLink(head); //打印链表结点的值
}
运行结果如下:
利用头插法创建一个单向链表以及链表的逆置
猜你喜欢
转载自blog.csdn.net/qq_39241239/article/details/80896748
今日推荐
周排行