打印出链接列表中的项目

Printing out items in linkedList

本文关键字:项目 列表 链接 打印      更新时间:2023-10-16
#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 的第一个索引开始。

你的问题实际上比你的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()不会产生这种结构。有了这个结构后,您只需从head开始print()并打印相应的data字段。