#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的第一个索引开始。
答案 0 :(得分: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
字段。