• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C语言实现单链表翻转的代码

OC/C/C++ 水墨上仙 1361次浏览

单链表反转:
比如原链表为 head->1->2->3->NULL;
反转后:head->3->2->1->NULL;

#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
	int data;
	struct Node *next;
}*List;
#define node struct Node
List creat(void);
List re( List head ,List p,List q);
void Outlist( List q );
int main(int argv, char *argc[])
{
	List head;
	List p;
	List q;
	head = NULL;
	head = creat();
	p = head->next;
	q = head;
	re(head,p,q);
	q = head->next;
	Outlist(q);
	system("pause");
	return 0;
}
List creat(void)
{
	int data;
	List head;
	List p;
	List q;
	int flag = 1;
	head = (List)malloc(sizeof(node));
	q = head;
	do
	{
		printf("请输入正数(<MAX_INT输入0表示输入结束):");
		scanf("%d",&data);
		fflush(stdin);
		if ( 0 == data )
		{
			q->next = NULL;
			flag = 0;
		}
		else
		{
			p = (List)malloc(sizeof(node));
			p->data = data;
			q->next = p;
			q = p;
		}
	}while(flag);
	q = head->next;
	Outlist(q);
	return head;
}
void Outlist( List q )
{
	while(NULL != q)
	{
		printf("%d ",q->data);
		q = q->next;
	}
	printf("\n");
	return;
}
List re(List head,List p,List q)
{
	if(NULL == p)
	{
		head->next = q;
	}
	else
	{
		p=re(head,p->next,q->next);
		p->next = q;
		if( head ==  q)
		{
			p->next = NULL;
		}
	}
	return q;
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言实现单链表翻转的代码
喜欢 (0)
加载中……