链表逆序(c++)

原创 2018年04月15日 11:23:53

主要实现思路:

    思路1,

        第一步,确定链表结点个数作为for循环结束条件;

        第二步,for循环到链表尾,将尾结点头插到当前链表,删除尾结点,到此结束第一次循环;

    思路2,

        第一步,创建一个新链表保存逆序结果;

        第二步,while循环从链表第一个结点开始向新链表进行头插,注意是“头插”;


代码实现:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>

using namespace std;

struct LinkNode{
int num;
LinkNode * next;
};


class LinkList{
public:
//初始化
void init_linkList()
{
this->head = new LinkNode();
}
//头插,头结点不保存数据
void insert_linkList(int num)
{
LinkNode * newNode = new LinkNode();
newNode->num = num;
newNode->next = head->next;
head->next = newNode;
}
//遍历
void print_linkList()
{
LinkNode * tmp = head->next;
while (tmp != NULL)
{
cout << tmp->num << " ";
tmp = tmp->next;
}
cout << endl;
}
//逆序
void reverse_linkList()
{
/*
一般思路:从第一个元素开始头插到另一个链表中去
*/
LinkNode * newNode = new LinkNode();
LinkNode * p = newNode->next;
LinkNode * tmp = this->head->next;
while (tmp != NULL)
{
LinkNode * tmp_next = tmp->next;
//将当前结点挂到新链表
tmp->next = p;
newNode->next = tmp;
//更新新链表插入位置
p = tmp;
//当前结点指针后移
tmp = tmp_next;
}
this->head = newNode;
}
private:
LinkNode * head;
};
//测试代码
void test01()
{
LinkList list;
list.init_linkList();
for (int i = 0; i < 10; ++i)
{
list.insert_linkList(i);
}
cout << "****************逆序前*******************" << endl;
list.print_linkList();

list.reverse_linkList();
cout << "****************逆序后*******************" << endl;
list.print_linkList();
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}

4.9.链表&状态机与多线程

-
  • 1970年01月01日 08:00

C/C++笔试经典——链表倒序

设链表节点为: typedef struct tagListNode{ int data; struct tagListNode* next; }ListNode, *List;...
  • hbuxiaofei
  • hbuxiaofei
  • 2014-07-03 17:15:16
  • 3502

C++实现链表逆序

链表的结构
  • a1037488611
  • a1037488611
  • 2014-10-20 14:34:35
  • 1708

【链表】C++链表反转、链表逆序打印

题目:C++实现链表逆序打印、链表反转 如何将链表逆序,取决于题目的要求。如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印。 方法1:只逆序打印,不改变...
  • yebanxin
  • yebanxin
  • 2016-07-18 15:46:14
  • 5031

C++ 递归和非递归实现链表逆序

测试环境:vs2010  windows7 逆序分别采用递归调用和链表头插法实现逆序。 具体代码如下: #include #include using namespace std; class...
  • huangshanchun
  • huangshanchun
  • 2015-07-14 19:40:12
  • 1132

笔试题之链表逆序A->B->C to C->B>A

  • 2009年09月21日 22:37
  • 927B
  • 下载

c++实现单链表逆序

struct Node { int x; Node * next; Node(int x1,Node * next1) { x = x1; next = next1; } }; No...
  • u011210708
  • u011210708
  • 2016-11-22 13:58:46
  • 207

编程算法 - 链表逆序 代码(C)

链表逆序 代码(C)本文地址: http://blog.csdn.net/caroline_wendy链表逆序, 作为链表操作的基础必须要熟练手写.主要包含3个部分, 一个指针记录后面节点, 一个指针...
  • u012515223
  • u012515223
  • 2014-09-16 11:06:56
  • 1997

C++链表逆序打印节点

#include #include using namespace std; template struct Node { Type data; Node *next; N...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015-05-24 10:43:53
  • 674

C++使用递归来顺序和逆序输出链表的全部元素

  • 2012年03月31日 20:33
  • 64KB
  • 下载
收藏助手
不良信息举报
您举报文章:链表逆序(c++)
举报原因:
原因补充:

(最多只允许输入30个字)