链表

双链表:

在线性表的链式存储结构中,每一个物理结点增加一个指向后继结点的指针域和一个指向前趋结点的指针域

创建一个双向链表

struct Node          //组成双向链表的节点
{
    int data;
    Node * pNext;       //指向下一个结点
    Node * pLast;       //指向上一个结点
};

初始化双向链表

Node*List(int length)//创建双向链表
{
    Node*pHead;
    Node * pTail;
    pHead = new Node();
    pHead->pLast = nullptr;
    pTail = pHead;
    for (int i = 0; i < length; i++)
    {
        Node * temp = new Node();       //创建一个tmp保存临时输入数据
        cout << "please enter the no" << i + 1 << " Node's data:";
        cin >> temp->data;
        temp->pNext = nullptr;
        temp->pLast = pTail;
        pTail->pNext = temp;
        pTail = temp;
    }
    pEnd=pTail;     //保存链表最后地址
    return pHead;
}

遍历双向链表

void traverseList(Node*pHead)//正向遍历
{
    Node * p = pHead->pNext;
    while (p != NULL)
    {
        cout << p->data << endl;
        p = p->pNext;
    }
}
//逆向遍历
//传入一个尾结点位置pEnd
void resList(Node*pEed)
{
    Node *p=pEd->pLast;
    while (p != NULL)
    {
        cout << p->data << endl;
        p = p->pLast;
    }
}
点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像