您的位置:首页 > 职场人生

剑指offer面试题5:从尾到头打印链表

2016-07-08 16:23 721 查看
#include "iostream"
#include <string>
#include "stack"
using namespace std;
struct ListNode{
int data;
ListNode *next;
};
void printdigui(ListNode *pHead)
{
if (pHead!=NULL)
if (pHead->next != NULL)
printdigui(pHead->next);
cout << pHead->data;
}
void print(ListNode *pHead)
{
stack<ListNode*> nodes;
if (pHead == NULL)
return;
ListNode *pNode=pHead;
while (pNode!=NULL)
{
nodes.push(pNode);
pNode = pNode->next;
}
while (!nodes.empty())
{
pNode =nodes.top();
cout << pNode->data;
nodes.pop();
}
}
void removeNode(ListNode **pHead,int value)
{
if (*pHead == NULL)
return;
ListNode *tobedelete=NULL;
if ((*pHead)->data == value)
{
tobedelete = *pHead;
*pHead = (*pHead)->next;
}
else
{
ListNode *pNode = *pHead;
while (pNode->next != NULL&&pNode->next->data != value)
pNode = pNode->next;
if (pNode->next != NULL&&pNode->next->data == value)
{
tobedelete = pNode->next;
pNode->next = pNode->next->next;
}
}
if (tobedelete!=NULL)
{
delete tobedelete;
tobedelete = NULL;
}
}
void addToTail(ListNode **pHead,int value)
{
ListNode *pNew = new ListNode();
pNew->data = value;
pNew->next = NULL;
if (*pHead == NULL)
*pHead = pNew;
else
{
ListNode *pNode = *pHead;
while (pNode->next != NULL)
pNode = pNode->next;
pNode->next = pNew;
}
}
int main()
{
ListNode *pHead=NULL;
addToTail(&pHead, 1);
addToTail(&pHead, 2);
addToTail(&pHead, 3);
//removeNode(&pHead, 3);
/*cout << pHead->data << endl;
cout << pHead->next->data << endl;*/
//print(pHead);
printdigui(pHead);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: