普通循环逆置:
方法:
#include<stdio.h>
typedef struct LNode{
int data;
struct LNode* next;
}LinkNode;
LinkNode* fun(LinkNode *L)
{
LinkNode *pRev=NULL;
LinkNode *pCur=L;
LinkNode *pTemp=NULL;
if(L==NULL||L->next==NULL)
{
return L;
}
while(pCur!=NULL)
{
pTemp=pCur;
pCur=pCur->next;
pTemp->next=pRev;
pRev=pTemp;
}
return pRev;
}
//创建链表
LinkNode *CreatList()
{
int val, i, n;
LinkNode *phead, *p, *q;
phead = NULL;
printf("请输入您要建立的链表长度:\n");
scanf("%d", &n);
printf("请输入您要输入的数据:\n");
for(i=0; i<n; ++i)
{
scanf("%d", &val);
p = (LinkNode *)malloc(sizeof(LinkNode));
p->data = val;
if(NULL == phead)
q = phead = p;
else
q->next = p;
q = p;
}
p->next = NULL;
return phead;
}
void ShowList(LinkNode *phead)
{
LinkNode *p;
p = phead;
while(p)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
LinkNode *LinkList;
LinkList = CreatList();
ShowList(LinkList);
LinkList = fun(LinkList);
ShowList(LinkList);
}