单链表逆序详解
扫描二维码
随时随地手机看文章
单链表逆序详解
1、具有链表头的单链表
一段单链表逆序的程序
typedef struct student
{
int number;
char name[20];
int score;
struct student *next;
}student;
student *reverse(student *stu)
{
student *p1,*p2,*p3;
if(stu == NULL ||stu->next == NULL)
return stu;
p1=stu->next; //p1指向链表头节点的下一个节点
p2=p1->next;
p1->next=NULL;
while(p2)
{
p3=p2->next;
p2->next = p1;
p1=p2;
p2=p3;
}
printf("p1 = %d,next = %dn",p1->number,p1->next->number);
stu->next=p1; //将链表头节点指向p1