打印链接列表中的项目

时间:2013-09-29 23:07:38

标签: c++

#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中的元素? 我的问题是我不知道如何从linkList的第一个索引开始。

1 个答案:

答案 0 :(得分:0)

你的问题实际上比你的print()功能要深得多:你的push_back()无法按照你想要的方式工作!我强烈建议你拿一张纸,用各个元素绘制列表结构。最初,您有一个空列表:

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

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

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

这样做只需要创建一个新节点并修改头部。添加更多节点会更有趣,因为您还需要记住最后一个节点,或者需要遍历列表以添加一些内容。按此顺序添加包含数据123的三个节点后的图片应如下所示:

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

显然,在push_back()中进行了编码,但您当前的push_back()不会产生此结构。拥有此结构后,您只需使用print()启动head并打印相应的data字段。