#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); }
链表又见链表--伤不起啊