精华内容
下载资源
问答
  • 创建和遍历链表

    2017-02-18 17:20:23
    简单实用的创建和遍历链表代码
  • 遍历链表

    2013-11-30 14:03:26
    题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1732 解决:743 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个...
    
    题目1181:遍历链表
    

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:1732

    解决:743

    题目描述:

    建立一个升序链表并遍历输出。

    输入:

    输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。

    输出:

    可能有多组测试数据,对于每组数据,
    将n个整数建立升序链表,之后遍历链表并输出。

    样例输入:
    4
    3 5 7 9
    样例输出:
    3 5 7 9
    
    
    #include<iostream>
    #include<list>
    using namespace std;
     
    int main()
    {
        int n,t,f;
        list<int> v;
        list<int>::iterator pos;
        while(cin>>n&&n)
        {
             while(n--)
             {
                  cin>>t;
                  v.push_back(t);
             }
             v.sort();
             for(pos=v.begin(),f=1;pos!=v.end();++pos)
             {
                 if(f==1) { cout<<*pos; f=0; }
                 else cout<<' '<<*pos;
             }
             v.clear();
             cout<<endl;
        }
        return 0;
    }
    /**************************************************************
        Problem: 1181
        User: 3011216016
        Language: C++
        Result: Accepted
        Time:140 ms
        Memory:1520 kb
    ****************************************************************/
    展开全文
  • 遍历链表+链表的参数

    2018-11-12 21:14:27
    一、遍历链表 在操作链表的函数中将频繁使用遍历链表这种编程模式,比如:计算链表节点个数 for(cursor = head_ptr; cursor != NULL; cursor =cursor-&gt;link()) { //在循环体中,可以执行操作链表中节点所...

    一、遍历链表

    在操作链表的函数中将频繁使用遍历链表这种编程模式,比如:计算链表节点个数

    for(cursor = head_ptr; cursor != NULL; cursor  =cursor->link())
    {
        //在循环体中,可以执行操作链表中节点所需的任何计算
    }

    (1)假设cursor指向某个节点

    (2)那么cursor->link()就指向下一个节点(如果存在)

    (3)要把cursor移动到指向下一个节点,使用语句:cursor = cursor->link();

    如果下一个节点不存在,那么cursor->link()就为NULL,因此上面复制语句就会将cursor设置为NULL。

    二、链表的参数

    (1)以带有const关键字的指针作为参数

    比如计算链表的节点数量的函数。size_t list_length(const node* head_ptr)需要向函数传递指向常节点的指针,我们不希望函数改变链表的任何内容,只是希望通过指针操作来统计链表中节点的数量。

    该函数使用头指针来访问链表的节点,但函数不会改变链表的内容。通常在这种情况下应该使用const node*:当函数不会改变链表的任何内容的时候,应该使用指向常量节点的指针。

    (2)以指向节点的指针作为参数

    比如向链表中插入节点。void list_insert(node* ); 如在A和B节点中插入c节点,我们就要向函数传递指向A节点的指针了,通过指向节点A的指针操作,最后使得A节点的的指针域从原来的指向节点B变成指节点向c。但是指向A节点的这个指针依然指向节点A,只是通过函数修改了A节点的指针域。像这种需要修改链表的函数,但函数无需指向新节点的时候,我们使用指向节点的指针作为参数。

    (3)以指向节点的指针作为引用参数比如在链表头插入一个新节点。void list_head_inset(node*& head_ptr,const node::value_type7 entry); 需要向函数传递一个指向头节点的指针,并通过该函数将改头节点指针的指向。所以应该传递指针的引用,使得实参指向新插入的节点。


    参考:《数据结构与面向对象程序设计》(C++版)Michael Main等编著


     

    展开全文
  • //构建链表 #include"list.h"  listnode* MiddleNOdeFromEnd(listnode* head) { listnode* pahead=head; listnode* pbehind=head; if(head->next==NULL) return NULL; if(head->next->next==NULL) return ...
    //构建链表
    #include"list.h"
     listnode* MiddleNOdeFromEnd(listnode* head)
    {
    listnode* pahead=head;
    listnode* pbehind=head;
    if(head->next==NULL)
    return NULL;
    if(head->next->next==NULL)
    return head->next;
    while(pahead!=NULL&&pbehind!=NULL&&pbehind->next!=NULL&&pahead->next!=NULL)
    {
    pahead=pahead->next->next;
    pbehind=pbehind->next;
    }
    return pbehind;
    }
    int main()
    {
    list list1;
    list1.addtolist(1);
    list1.addtolist(2);
    /*list1.addtolist(3);
    list1.addtolist(4);
    list1.addtolist(5);
    list1.addtolist(6);
    list1.addtolist(7);
    list1.addtolist(8);
    list1.addtolist(9);
    list1.addtolist(10);
    list1.print();*/
    listnode* head=list1.Head();

    listnode* pmiddle=MiddleNOdeFromEnd(head);
    cout<<pmiddle->data<<endl;
    return 0;
    }
    展开全文
  • 数据结构 初始化链表,插入删除节点,遍历链表,链表长度,找出中间节点
  • 【剑指offer06】【C++】从尾到头遍历链表题目题解 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000...

    【剑指offer06】【C++】从尾到头遍历链表

    题目

    输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
    示例 1:
    输入:head = [1,3,2]
    输出:[2,3,1]
    限制:
    0 <= 链表长度 <= 10000

    题解

    笔记:
    1.vector数组插入元素到首个位置:

    	v.insert(v.begin(),value);
    	//在第二个元素前插入新元素1
        v.insert(v.begin()+2,1);
    	//删除单个元素,从0开始计数,删除第二个元素
        v.erase(v.begin()+2); 
    	//删除一段元素,删除迭代器第一到第五区间所有元素
    	v.erase(v.begin()+1,v.begin()+5);   //删除的起始位置和删除的最后一个元素的下一个位置
    

    2.什么时候用->,什么时候用. 需要清楚,ptr->val或者(*ptr).val;

    对于a.b,
    	a一定是某个类的一个具体的对象(或对于这个对象的引用)。
    对于a->b,
    	如果a是个指针,b就是指针a指向的对象的一个成员;
    	如果a是某个重载了操作符->的类的对象,那么被重载过的->()方法就会被调用
    

    代码:

    struct ListNode {
    	int val;
    	ListNode *next;
    	ListNode(int x) : val(x), next(NULL) {}
    };
    class Solution {
    public:
    	vector<int> reversePrint(ListNode* head) {
    		vector<int> v;
    		if (head != nullptr) {
    			//如果是(*head)则整体不是指针了,用“.”,或者head->val
    			v.insert(v.begin(), head->val);
    			ListNode* pnode = head;
    			while (pnode->next != nullptr) {
    				pnode = pnode->next;
    				v.insert(v.begin(), pnode->val);//或者用(*pnode).val
    			}
    		}
    		return v;
    	}
    };
    
    //方法2:reverse
    class Solution {
    public:
    	vector<int> reversePrint(ListNode* head) {
    		vector<int> res;
    		while (head) {
    			res.push_back(head->val);
    			head = head->next;
    		}
    		reverse(res.begin(), res.end());
    		return res;
    	}
    };
    
    展开全文
  • 遍历链表很重要。 因为
  • 题目描述 建立一个升序链表并遍历输出。...将n个整数建立升序链表,之后遍历链表并输出。 示例 输入 4 3 5 7 9 输出 3 5 7 9 提示! 先排序,后建表。尾插法是关键。 Code #include<iostream>...
  • #include <iostream> #include <cstdlib> #include <string> using namespace std; //定义一个结构体 typedef struct ListNode{ int value; struct ListNode* next;...//创建n个链表 List...
  • //==========test code========== // functional test void test() { LinkedList list; //create linked list; list.append(1); list.append(2); list.append(3); list.append(4); list.append(5);...}
  • 删除一个无头单链表的非尾节点(不能遍历链表) 疑问: 为什么要说明是无头单链表? ——因为如果是带有头节点的单链表,假设要删除的是第一个节点,头节点是没有数据域的只有指针域,因此要想使用以下的方法就不能...
  • 题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2600 解决:1125 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1000...
  • 然后遍历链表,该元素的绝对值第一次出现就放入数组a,如果之前出现过就放入数组b。分别输出两个数组即可。 ac代码 #include<bits/stdc++.h> using namespace std; const int N =1e5+10; int h,n; int e[N],ne[N]; ...
  • 文章:http://blog.csdn.net/lionpku/article/details/44278803 的链表版本。 代码如下: #include using namespace std; //敌舰结构体 struct EnemySpaceShip { int x_coordinate; int y_coordinate; int ...
  • 遍历(打印)单向链表。 (3).把单向链表中元素逆置(不允许申请新的结点空间)。 (4).在单向链表中删除所有的偶数元素结点。 (5).对链表排序,排序后链表元素按照非递减方式排列(注意:排序时如果要交换两个结点...
  • 题目描述: 建立一个升序链表并遍历输出。...将n个整数建立升序链表,之后遍历链表并输出。 样例输入: 4 3 5 7 9 样例输出: 3 5 7 9 来源: 2000年华中科技大学计算机研究生机试真题 如果用数组的话,使用快排
  • 这篇文章主要介绍了 C++ 遍历文件夹下所有文件的多种方法,需要的朋友可以参考下 文章目录C++ 遍历文件夹下所有文件的多种方法一、实现方法一二、实现方法二三、实现方法三四、实现方法四 C++ 遍历文件夹下所有文件...
  • C++遍历方法

    千次阅读 2019-07-18 20:10:14
    C++遍历方法 容器 序列式 关联式 适配器 下标 vector map 迭代器 STL算法 for_each copy 基于范围循环 range-for 特别说明 条款 调用算法优先于手写循环 参考资料 容器 序列式 序列式容器的数据结构是线性结构 中文...
  • 在这里插入代码片 从事程序行业两年,对这些基础的东西没有好好复习,,基础不牢,地动山摇 #include #include “LinkList.h” using namespace std; /* @autor:Hu Pinghui @version:V1.0 @param:LinkList ...
  • C++ 双向链表的建立与遍历

    千次阅读 2019-05-27 19:49:16
    C++ 双向链表的建立与遍历 开发工具与关键技术:C++、VisualStudio 作者:何任贤 撰写时间:2019年05月20日 链表是以struct或class数据结构为基础的动态数据结构,它的存储方式是以节点形式存储,节点分为两部分,...
  • 链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。 题解: 本体想要输出倒数第k个节点,对于单链表而言,在不知道链表长度的情况下,要输出倒数第k个节点,有两种方法: 1)遍历长度查找: 利用第一次...
  • C++遍历list并删除

    千次阅读 2020-05-09 19:41:15
    //初始化一个int的list std::list<int> intList; for(int i = 0;i<=3;i++) intList.pushback(i); //使用pushback向List加内容 std::list<int>::iterator itor;... itor = intList.erase(it
  • C++遍历2叉数

    2017-02-26 21:13:01
    关于2叉数的遍历问题,有很多,一般有三种常用遍历方法: (1)前序遍历(2)中序遍历(3)后续遍历  以下是经典示例: #include "stdafx.h" #include #include #include #define MaxSize 20 typedef struct BiTNode...
  • C++先序遍历的顺序建立二叉链表
  • 线索链表是在二叉链表的基础上增加了结点的前驱和后继,若一结点的左指针为空,则指向其前驱,若右结点为空,则指向其后继结点。
  • 双向链表遍历和移除 //单向链表和双向链表 template<class T> struct FNode { FNode() :Next(NULL) ,Previous(NULL) { } FNode* Next; FNode* Previous; void* Data; }; int main() { FNode<...
  • C++遍历文件夹下的所有文件

    万次阅读 2016-12-08 20:58:49
    //定义一个存放结果文件名称的链表 //遍历一次结果的所有文件,获取文件名列表 find("XXXX具体文件夹目录",fileList);//之后可对文件列表中的文件进行相应的操作 //输出文件夹下所有文件的名称 for(int i = 0; ...
  • C++:链表(初识链表)

    千次阅读 2017-07-15 17:21:44
    介绍 链表是把若干个对象用指针串联起来,形成一个链状的数据结构,链表在开发中很重要。 1.链表特征:只需要知道一个链表头,就能访问每个节点...创建和遍历链表   #include &lt;stdio.h&gt; //结...
  • 这两天一直在学习如何使用c++遍历文件夹、读取文件内容和写入文件。 话不多说,直接上代码   /* * 文件功能:递归遍历文件夹,遍历文件夹及其子文件夹和文件.打印文件夹名称、文件名称和文件数目 * * * 参考:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,864
精华内容 24,745
关键字:

c++遍历链表

c++ 订阅