您的位置:首页 > 其它

链表 逆序 例子

2012-03-16 12:45 197 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: