现在的位置: 首页 > 综合 > 正文

C语言–单向循环链表逆序

2013年11月04日 ⁄ 综合 ⁄ 共 657字 ⁄ 字号 评论关闭
#include <stdio.h>
#include <malloc.h>

typedef int ElemType;

typedef struct LNode   //定义LNode结构体 
{
	LNode *next;  //指针域 
	ElemType data; //数据域 
			 
}LNode,*LinkList; 

void InitList(LinkList &L) //采用链表尾初始化链表 
{
	int i;
	LinkList p,q;
	L=(LinkList)malloc(sizeof(LNode));
	p=L;
	for(i=0; i<5; i++)
	{
		q=(LinkList)malloc(sizeof(LNode));
		q->data=i+1;
		p->next=q;
		p=q;			
	}	
	p->next=L;  
}

void ReseverList(LinkList &L)  //反转链表 
{
	LinkList p,q,s;
	p=s=L->next;
	while(p!=L)
	{
		q=p->next;  //保存P的下一个节点 
		p->next=L->next;
		L->next=p;
		p=q;
	}
	s->next=L;	//第一节点(其实就是最后一个)指向头节点	
} 

void ShowList(LinkList L) //显示链表 
{
	for(LinkList p=L->next;p!=L;p=p->next)
	{
		printf("%d ",p->data);
	}
	puts("");
}

int main()
{
	LinkList head;	
	InitList(head);
	ReseverList(head);
	ShowList(head);
}

链表又见链表--伤不起啊

抱歉!评论已关闭.