#include <iostream>
using namespace std;
typedef struct LinkNode
{
int id;
struct LinkNode *Next;
}Node;
Node * createLink(Node a[],int n)
{
Node *head=a;
for(int i=0;i<n-1;i++)
{
a[i].Next=&a[i+1];
}
a[n-1].Next=NULL;
return head;
}
Node * reverse_linkList(Node *pHeader)
{
if(pHeader == NULL)
{
cout<<"NULL point"<<endl;
}
Node *pPre=NULL;
Node *pCurrent=pHeader->Next;
Node *pNext=NULL;
while( pCurrent != NULL )
{
pNext=pCurrent->Next;
pCurrent->Next=pPre;
pPre=pCurrent;
pCurrent=pNext;
}
pHeader->Next=pPre;
return pHeader;
}
int size_LinkList(struct LinkNode *pHeader)
{
if(pHeader==NULL)
{
return -1;
}
struct LinkNode *pCurrent=pHeader;
int num=0;
while(pCurrent!=NULL)
{
num++;
pCurrent=pCurrent->Next;
}
return num;
}
void outPutLink(Node * head)
{
Node *p=head;
while(p!=NULL)
{
cout<< p->id<<"\t";
p = p->Next;
}
cout<<endl;
}
int main()
{
Node a[8]={{1},{2},{3},{4},{5},{6},{7},{8}},*head;
for(int i=0;i<8;i++)
cout<<a[i].id<<"\t";
cout<<endl;
head = createLink(a,8);
outPutLink(head);
cout<<size_LinkList(head)<<endl;
reverse_linkList(head);
outPutLink(head);
return 0;
}
运行结果是:
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
8
1 8 7 6 5 4 3 2
为什么1还是在最前面呢?这边该如何修改代码呢?