1.图
2.上代码
三个调用函数:建立链表void setting(abct head,int n);
链表逆置void reverse(abct head);
链表输出void myprintf(abct head);
#include <stdio.h>
#include <stdlib.h>
typedef struct abc
{
int data;
struct abc* next;
}* abct;
int main()
{
void setting(abct head,int n);
void reverse(abct head);
void myprintf(abct head);
int n=0;
abct head;
head=(abct)malloc(sizeof(struct abc));
scanf("%d",&n);
setting(head,n);
reverse(head);
myprintf(head);
return 0;
}
void setting(abct head,int n)
{
abct q=head,p;
while(n>=1)
{
p=(abct)malloc(sizeof(struct abc));
scanf("%d",&p->data);
q->next=p;
q=p;
n--;
}
p->next=NULL;
}
void reverse(abct head)
{
abct q=head->next,r=NULL;
head->next=NULL; //先断链
while(q!=NULL)
{
r=q->next;
q->next=head->next;
head->next=q;
q=r;
}
}
void myprintf(abct head)
{
abct q=head->next;
int i=1;
while(q!=NULL)
{
printf(" %d",q->data);
q=q->next;
}
}