标签:.com rbegin ext inf ref link push 技术 str
源码:
#include <iostream>
#include <vector>
using namespace std;
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkedList;
/*****************************************************************************/
/* 函数说明: 创建一个带头结点的单链表 */
/* 功能描述: 无 */
/* 返回代码: 带头结点的单链表 */
/* 参数说明: 链表 */
/*****************************************************************************/
LinkedList LinkedListInit(){
Node *Head, *L, *LNew;
/* 申请空间 */
Head = (Node *)malloc(sizeof(Node));
L = Head;
L->next = NULL;
for(int i = 0; i < 10; ++i){
/* 创建新节点 */
LNew = (Node *)malloc(sizeof(Node));
LNew->data = i;
L->next = LNew;
LNew->next = NULL;
L = LNew;
}
/* 返回头指针 */
return Head;
}
/*****************************************************************************/
/* 函数说明: 从尾到头打印链表 */
/* 功能描述: 创建两个vector */
/* 第一个vector用来存储链表中的数据。 */
/* 第二个vector用来存储第一个vector的逆打印。 */
/* 返回代码: 逆序vector */
/* 参数说明: 链表 */
/*****************************************************************************/
vector<int> printListFromTailToHead(Node *head) {
vector<int> v1, v2;
/* 将链表中的数据存入到v1中 */
while(head != NULL){
v1.push_back(head->data);
head = head->next;
}
/* 逆序输出v1, 然后存入v2中 */
for(auto it = v1.rbegin(); it != v1.rend(); ++it){
v2.push_back(*it);
}
/* 返回v2 */
return v2;
}
int main(){
Node *p;
vector<int> v;
p = LinkedListInit();
p = p->next; //带头结点单链表
printListFromTailToHead(p);
v = printListFromTailToHead(p);
for(auto it = v.begin(); it != v.end(); ++it){
cout << *it << ' ';
}
cout << endl;
return 0;
}
标签:.com rbegin ext inf ref link push 技术 str
原文地址:https://www.cnblogs.com/komean/p/10701151.html