您的位置:首页 > 其它

从尾到头打印链表

2016-01-08 10:02 330 查看
从头到尾打印链表是很正常的思路,但是若要是从尾到头打印链表,再不改变数据结构的情况下,怎么打印呐? 我们想到的是用栈来实现,先将链表从头到尾进行访问,并将其入栈,待链表全部访问完之后,那么我们可以将栈中的内容输出,那么自然就做到了从尾到头打印链表。 在这建立链表的时候遇到了一个问题,以前是习惯使用的是C中的typedef struct,而如今使用类,不习惯。那如何使用类来实现链表的建立呢? 1.建立一个名为Node类,类中有int data,和一个指向Node类型的指针。 2.建立一个名为Linklist的类,类中仅仅只有一个Node *L,即指向Node类型的指针。建立起两个类后,若要建立一个有头结点的单链表,那么将Linklist中的L,首先申请空间。申请1个空间即可。 3.那么我们怎么将建立单链表呐? 我们使用一个for循环,将其中的变量作为其结点的数据。我们使用的是头插法来建立链表。注意的是每次循环都要使用Node 类型的指针,如果使用的是Node类型,会出现每次循环结束后,地址会释放掉,下次循环时还有可能申请的是相同的地址。 for (int i = 0; i < 5; ++i)//建立链表 { Node *node = new Node; node->data = i; node->next = (l.L)->next;
l.L->next = node; } 有了单链表,那么就从头结点的下一个结点开始访问,并入栈,直到单链表访问结束为止。然后开始出栈操作。这样单链表就可以逆序打印了。代码如下:
Node *p = l.L ->next;//指向链表头
while(p != NULL)//入栈 { cout<<"//"<<p->data<<"// ";
s.Push(p->data);
p = p->next; } int node;
while(s.empty() != 1)//出栈 { node = s.Pop();
cout<<node<<" "; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: