</pre><pre name="code" class="cpp">#include <iostream>
using namespace std;
struct ListNode
{
int m_nvalue;
ListNode* m_pNext;
};
void addToTail(ListNode* pHead,int value){
ListNode *pNode = new ListNode();
pNode -> m_nvalue = value;
pNode -> m_pNext =NULL;
if(pHead == NULL){
pHead=pNode;
}
else{
ListNode* pN=pHead;
while(pN->m_pNext!=NULL){
pN=pN -> m_pNext;
}
pN -> m_pNext = pNode;
}
}
void removeNode(ListNode* pHead,int value){
if(pHead==NULL){
return;
}
ListNode* pToBeDeleted=NULL;
if(pHead->m_nvalue==value){
pToBeDeleted=pHead;
pHead=pHead->m_pNext;
}
else{
ListNode* pN=pHead;
while(pN->m_pNext!=NULL&&pN->m_pNext->m_nvalue!=value){
pN = pN -> m_pNext;
}
if(pN -> m_pNext !=NULL && pN -> m_pNext -> m_nvalue == value ){
pToBeDeleted=pN -> m_pNext;
pN -> m_pNext =pN -> m_pNext -> m_pNext;
}
}
if(pToBeDeleted != NULL){
delete pToBeDeleted;
pToBeDeleted = NULL;
}
}
void print(ListNode* pHead){
if(pHead!=NULL){
ListNode* pN=pHead;
while(pN -> m_pNext != NULL){
int n = pN -> m_nvalue;
cout << n <<"-->";
pN = pN -> m_pNext;
}
cout << pN -> m_nvalue;
cout << endl;
}
}
void destroyList(ListNode* pHead){
if(pHead == NULL )
return;
ListNode* pN=pHead -> m_pNext;
while(pN != NULL){
delete pHead;
pHead = pN;
pN = pN ->m_pNext;
//pToBeDeleted = NULL;
}
delete pHead;
pHead = NULL;
return;
}
void printReverse(ListNode* pHead){
if(pHead != NULL){
stack<ListNode*> nodes ;
ListNode* pNode = pHead;
while(pNode != NULL){
nodes.push(pNode);
pNode = pNode -> m_pNext;
}
while(!nodes.empty()){
pNode = nodes.top();
nodes.pop();
cout << pNode ->m_nvalue << "-->";
}
cout << endl;
}
}
int main() {
cout << "test\n";
ListNode* pHead=new ListNode;
pHead -> m_nvalue=1;
pHead -> m_pNext=NULL;
for(int i = 0; i<10;i++){
addToTail(pHead,i);
}
//cout << pHead -> m_nvalue;
print(pHead);
//destroyList(pHead);
removeNode(pHead,6);
print(pHead);
printReverse(pHead);
return 0;
}
|