删除不带头结点的单链表的非尾结点&&逆序打印单链表

来源:互联网 发布:autocut线切割软件 编辑:程序博客网 时间:2024/06/14 10:58
//链表定义typedef struct Node{    Node(const int& value)    : m_value(value)    , m_pNext(NULL)    {}    int   m_value;    Node* m_pNext;}Node, *pNode;//删除无头单链表的非尾结点//要删除的结点如果是头节点或者尾结点则不删除void Del(pNode pDel){    if (pDel==NULL)        return;    if (pDel->m_pNext)    {        pDel->m_value = pDel->m_pNext->m_value;        pNode pTemp = pDel->m_pNext;        pDel->m_pNext = pDel->m_pNext->m_pNext;        delete pTemp;    }}//逆序打印单链表//递归void Printf1(pNode pHead){    if (pHead->m_pNext)        Printf1(pHead->m_pNext);    cout << pHead->m_value << " ";}#include<stack>//非递归void Printf2(pNode pHead){    stack<pNode> st;    while (pHead)    {        st.push(pHead);        pHead = pHead->m_pNext;    }    while (!st.empty())    {        pNode temp = st.top();        st.pop();        cout << temp->m_value << " ";    }}
原创粉丝点击