0
#include<stdlib.h>
#include<stdio.h>
#include<iostream>

struct node {
    int data;
    node* next;
    node* prev;
};

node *sentinel;
int numItem;


void pushBack(int new_data){

    sentinel = new node();

    while( (sentinel->next)!= NULL)
    {
        sentinel = sentinel->next;
    }

    node *toAdd = new node();
    toAdd->data = new_data;
    sentinel->next = toAdd;
    toAdd->next = NULL;
    numItem++;

}

void print(){




}

int main(){

    pushBack(1);
    pushBack(2);
    pushBack(3);
    pushBack(4);
    pushBack(5);
    print();


return 0;
}

我正在实现一个 pushBack() 方法,该方法是将项目添加到链表的末尾。如何实现 print() 方法以打印出linkedList 中的元素?我的问题是我不知道如何从linkedList 的第一个索引开始。

4

1 回答 1

0

您的问题实际上比您的print()功能要深得多:push_back()据我所知,您的工作方式并没有按照您希望的方式工作!我强烈建议你拿一张纸,用各个元素画出你的列表结构。最初,您将有一个空列表:

=========
| head -+-->nil
=========

插入一个元素时,您需要到达此结构,而不是:

=========       ===========
| head -+------>|  data=1 |
=========       |  next --+-->nil
           nil<-+- prev   |
                ===========

这样做只需要创建一个新节点并修改头部。添加更多节点会更有趣一些,因为您要么还需要记住最后一个节点,要么需要遍历列表以在其末尾添加一些内容。1添加三个具有数据、、2和的节点后的图片3应如下所示:

=========       ===========       ===========       ===========
| head -+------>|  data=1 |<-\/-->|  data=2 |<-\/-->|  data=3 |
=========       |  next --+--/\   |  next --+--/\   |  next --+->nil
           nil<-+- prev   |    \--+- prev   |    \--+- prev   |
                ===========       ===========       ===========

显然,对此进行编码已完成,push_back()但您的当前push_back()不会产生这种结构。一旦你有了这个结构,你就可以开始你print()head并打印相应的data字段。

于 2013-09-29T23:40:41.417 回答