typedef struct _Node
{
char data[50];
struct _Node* pNext;
_Node()
{
memset(data,0,50);
pNext = NULL;
}
} Node;
Node* CreateLink(int n)
{
Node* pHeaer = NULL;
Node* pCurrentNode = NULL;
Node* pItemNode = NULL;
pHeaer = new Node;
sprintf(pHeaer->data,"This is the link header");
pCurrentNode = pHeaer;
for (int i=0; i < n; i++)
{
pItemNode = new Node;
sprintf(pItemNode->data,"This it item %d",i);
pCurrentNode->pNext = pItemNode;
pCurrentNode = pItemNode;
}
return pHeaer;
}
Node* ReverseLink(Node* pHer)
{
Node* pHeader = NULL;
Node* pCurrentNode = NULL;
Node* pNewNode = NULL;
Node* pNextNode = NULL;
if (!pHer->pNext)
{
return pHer;
}
pHeader = pHer;
pCurrentNode = pHeader->pNext;
while(pCurrentNode->pNext)
{
pNextNode = pCurrentNode->pNext;
pCurrentNode->pNext = pNewNode;
pNewNode = pCurrentNode;
pCurrentNode = pNextNode;
}
pHeader->pNext = pNewNode;
return pHeader;
}
void PrintLink(Node* pHeader)
{
if (pHeader)
{
Node* pCurrentNode = NULL;
pCurrentNode = pHeader;
while (pCurrentNode->pNext)
{
printf("Link item data: %s \n",pCurrentNode->data);
pCurrentNode = pCurrentNode->pNext;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Node* pLinkHeader = NULL;
pLinkHeader = CreateLink(10);
PrintLink(pLinkHeader);
printf("\n\n\n");
pLinkHeader = ReverseLink(pLinkHeader);
PrintLink(pLinkHeader);
getchar();
return 0;
}
{
char data[50];
struct _Node* pNext;
_Node()
{
memset(data,0,50);
pNext = NULL;
}
} Node;
Node* CreateLink(int n)
{
Node* pHeaer = NULL;
Node* pCurrentNode = NULL;
Node* pItemNode = NULL;
pHeaer = new Node;
sprintf(pHeaer->data,"This is the link header");
pCurrentNode = pHeaer;
for (int i=0; i < n; i++)
{
pItemNode = new Node;
sprintf(pItemNode->data,"This it item %d",i);
pCurrentNode->pNext = pItemNode;
pCurrentNode = pItemNode;
}
return pHeaer;
}
Node* ReverseLink(Node* pHer)
{
Node* pHeader = NULL;
Node* pCurrentNode = NULL;
Node* pNewNode = NULL;
Node* pNextNode = NULL;
if (!pHer->pNext)
{
return pHer;
}
pHeader = pHer;
pCurrentNode = pHeader->pNext;
while(pCurrentNode->pNext)
{
pNextNode = pCurrentNode->pNext;
pCurrentNode->pNext = pNewNode;
pNewNode = pCurrentNode;
pCurrentNode = pNextNode;
}
pHeader->pNext = pNewNode;
return pHeader;
}
void PrintLink(Node* pHeader)
{
if (pHeader)
{
Node* pCurrentNode = NULL;
pCurrentNode = pHeader;
while (pCurrentNode->pNext)
{
printf("Link item data: %s \n",pCurrentNode->data);
pCurrentNode = pCurrentNode->pNext;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Node* pLinkHeader = NULL;
pLinkHeader = CreateLink(10);
PrintLink(pLinkHeader);
printf("\n\n\n");
pLinkHeader = ReverseLink(pLinkHeader);
PrintLink(pLinkHeader);
getchar();
return 0;
}