当前位置: 首页 > news >正文

数据结构基础 - 链表的遍历 zz

链表的遍历跟数组的遍历很相似,不过不同的是,数组可以通过索引值随机访问数据,而链表一定要通过遍历的方式访问其中的节点,如果要知道第n个节点的内容,就需要遍历n-1个节点。

C代码:
 1 None.gif #include < stdio.h >
 2 None.gif
 3 None.gif struct  llist
 4 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 5InBlock.gif    int num;
 6InBlock.gif    char name[10];
 7InBlock.gif    struct llist *next;
 8ExpandedBlockEnd.gif}
;
 9 None.giftypedef  struct  llist node;
10 None.giftypedef node  * llink;
11 None.gif
12 None.gif
13 ExpandedBlockStart.gifContractedBlock.gif /**/ /*链表的创建*/
14 None.gifllink createllist()
15 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
16InBlock.gif    llink head;
17InBlock.gif    llink ptr,ptr1;
18InBlock.gif    int i;
19InBlock.gif    
20InBlock.gif    head = (llink)malloc(sizeof(node));            //分配第一个节点
21InBlock.gif    if(!head)
22InBlock.gif        return NULL;    
23InBlock.gif    printf("请输入六项邮寄数据:\n");
24InBlock.gif    printf("请输入编号 ==> ");
25InBlock.gif    scanf("%d",&head->num);
26InBlock.gif    printf("请输入编号(%d)的姓名 ==> ",head->num);
27InBlock.gif    scanf("%s",head->name);
28InBlock.gif    head->next = NULL;
29InBlock.gif    ptr = head;    
30InBlock.gif    for(i = 1;i < 6; i++)
31ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
32InBlock.gif        ptr1 = (llink)malloc(sizeof(node));
33InBlock.gif        if(!ptr1)
34InBlock.gif            return NULL;
35InBlock.gif        printf("请输入编号 ==> ");
36InBlock.gif        scanf("%d",&ptr1->num);
37InBlock.gif        printf("请输入编号(%d)的姓名 ==> ",ptr1->num);
38InBlock.gif        scanf("%s",ptr1->name);
39InBlock.gif        ptr1->next = NULL;
40InBlock.gif        ptr -> next = ptr1;
41InBlock.gif        ptr = ptr ->next;
42ExpandedSubBlockEnd.gif    }

43InBlock.gif    return head;
44ExpandedBlockEnd.gif}

45 None.gif
46 ExpandedBlockStart.gifContractedBlock.gif /**/ /*链表的节点遍历*/
47 None.gifllink findnode(llink head, int  num)
48 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
49InBlock.gif    llink ptr;
50InBlock.gif    
51InBlock.gif    ptr = head;
52InBlock.gif    while(ptr != NULL)
53ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
54InBlock.gif        if(ptr->num == num)
55InBlock.gif            return ptr;
56InBlock.gif        ptr = ptr->next;
57ExpandedSubBlockEnd.gif    }

58InBlock.gif    return ptr;
59ExpandedBlockEnd.gif}

60 None.gif
61 None.gif
62 None.gif void  main()
63 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
64InBlock.gif    llink head;
65InBlock.gif    llink ptr;
66InBlock.gif    int num;
67InBlock.gif    
68InBlock.gif    head = createllist();
69InBlock.gif    if(!head)
70ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
71InBlock.gif        printf("内存分配失败!\n");
72InBlock.gif        exit(1);
73ExpandedSubBlockEnd.gif    }

74InBlock.gif    while(1)
75ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
76InBlock.gif        printf("请输入要寻找的邮寄编号 ==> ");
77InBlock.gif        scanf("%d",&num);
78InBlock.gif        if(num != 0)
79ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
80InBlock.gif            ptr = findnode(head,num);
81InBlock.gif            if(!ptr)
82InBlock.gif                printf("没有找到\n");
83InBlock.gif            else
84InBlock.gif                printf("姓名:%s\n",ptr->name);
85ExpandedSubBlockEnd.gif        }

86InBlock.gif        else
87InBlock.gif            exit(1);
88ExpandedSubBlockEnd.gif    }

89ExpandedBlockEnd.gif}

C#代码:
  1 None.gif using  System;
  2 None.gif
  3 None.gif class  Node
  4 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
  5InBlock.gif    private int num;
  6InBlock.gif    
  7InBlock.gif    public int Num
  8ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
  9ExpandedSubBlockStart.gifContractedSubBlock.gif        setdot.gif{num = value;}
 10ExpandedSubBlockStart.gifContractedSubBlock.gif        getdot.gif{return num;}
 11ExpandedSubBlockEnd.gif    }

 12InBlock.gif    
 13InBlock.gif    private string name;
 14InBlock.gif    
 15InBlock.gif    public string Name
 16ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 17ExpandedSubBlockStart.gifContractedSubBlock.gif        setdot.gif{name = value;}
 18ExpandedSubBlockStart.gifContractedSubBlock.gif        getdot.gif{return name;}
 19ExpandedSubBlockEnd.gif    }

 20InBlock.gif    
 21InBlock.gif    private Node next;
 22InBlock.gif    
 23InBlock.gif    public Node Next
 24ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 25ExpandedSubBlockStart.gifContractedSubBlock.gif        setdot.gif{next = value;}
 26ExpandedSubBlockStart.gifContractedSubBlock.gif        getdot.gif{return next;}
 27ExpandedSubBlockEnd.gif    }

 28ExpandedBlockEnd.gif}

 29 None.gif
 30 None.gif class  Llist
 31 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 32InBlock.gif    //链表的创建
 33InBlock.gif    public static Node CreateLlist()
 34ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 35InBlock.gif        Node head;
 36InBlock.gif        Node tempNode,tempNode1;
 37InBlock.gif        int i;
 38InBlock.gif        
 39InBlock.gif      head = new Node();
 40InBlock.gif      Console.WriteLine("请输入六项邮寄数据:\n");
 41InBlock.gif      Console.WriteLine("请输入编号==>");
 42InBlock.gif      head.Num = Convert.ToInt32(Console.ReadLine());
 43InBlock.gif      Console.WriteLine("请输入编号({0})的姓名 ==>",head.Num);
 44InBlock.gif      head.Name = Console.ReadLine();
 45InBlock.gif      head.Next = null;
 46InBlock.gif      tempNode = head;
 47InBlock.gif      for( i = 1 ;i < 6; i++)
 48ExpandedSubBlockStart.gifContractedSubBlock.gif      dot.gif{
 49InBlock.gif          tempNode1 = new Node();
 50InBlock.gif          Console.WriteLine("请输入编号 ==>");
 51InBlock.gif          tempNode1.Num = Convert.ToInt32(Console.ReadLine());
 52InBlock.gif          Console.WriteLine("请输入编号({0})的姓名",tempNode1.Num);
 53InBlock.gif          tempNode1.Name = Console.ReadLine();
 54InBlock.gif          tempNode1.Next = null;
 55InBlock.gif          tempNode.Next = tempNode1;
 56InBlock.gif          tempNode = tempNode.Next;
 57ExpandedSubBlockEnd.gif      }

 58InBlock.gif      return head;
 59ExpandedSubBlockEnd.gif    }

 60InBlock.gif    
 61InBlock.gif    //链表的节点遍历
 62InBlock.gif    public static Node FindNode(Node head,int num)
 63ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 64InBlock.gif        Node tempNode;
 65InBlock.gif        
 66InBlock.gif        tempNode = head;
 67InBlock.gif        while(tempNode != null)
 68ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 69InBlock.gif            if(tempNode.Num == num)
 70InBlock.gif                return tempNode;
 71InBlock.gif            tempNode = tempNode.Next;
 72ExpandedSubBlockEnd.gif        }

 73InBlock.gif        return tempNode;
 74ExpandedSubBlockEnd.gif    }
    
 75ExpandedBlockEnd.gif}

 76 None.gif
 77 None.gif class  Test
 78 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 79InBlock.gif    public static void Main()
 80ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 81InBlock.gif        Node head;
 82InBlock.gif        Node tempNode;
 83InBlock.gif        int num;
 84InBlock.gif        
 85InBlock.gif        head = Llist.CreateLlist();
 86InBlock.gif        while(true)
 87ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 88InBlock.gif            Console.WriteLine("请输入要寻找的邮寄编号 ==>");
 89InBlock.gif            num = Convert.ToInt32(Console.ReadLine());
 90InBlock.gif            if(num != 0)
 91ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 92InBlock.gif                tempNode = Llist.FindNode(head,num);
 93InBlock.gif                if(tempNode == null)
 94InBlock.gif                    Console.WriteLine("没有找到\n");
 95InBlock.gif                else
 96InBlock.gif                    Console.WriteLine("姓名:{0}\n",tempNode.Name);
 97ExpandedSubBlockEnd.gif            }

 98InBlock.gif            else
 99InBlock.gif                break;
100ExpandedSubBlockEnd.gif        }

101ExpandedSubBlockEnd.gif    }

102ExpandedBlockEnd.gif}

C#代码显得有些生硬,还请见谅。

相关文章:

  • 代码片段添加智能提示,打造一款人见人爱的ORM框架
  • [导入]常用Response对象的使用详解
  • 模板的特化
  • My favorite books
  • JVM(一)——JMM
  • 使用eval元素
  • 属性选择器[ ]里的东西,哪些要加引号
  • hibernate.cfg.xml常见配置
  • apple有话说
  • Centos7 修改mysql指定用户的密码
  • mvn:default-servlet-handler/标签作用
  • 转几篇.Net的文章
  • ubuntu在vim编辑时,方向键无法正常使用
  • browser 编程中 Delphi 如何返回数组给 javascript
  • 应用IBatisNet+Castle进行项目的开发
  • 【Leetcode】104. 二叉树的最大深度
  • 【知识碎片】第三方登录弹窗效果
  • JAVA 学习IO流
  • javascript 哈希表
  • java取消线程实例
  • js算法-归并排序(merge_sort)
  • Laravel5.4 Queues队列学习
  • Redis的resp协议
  • Redis中的lru算法实现
  • STAR法则
  • Webpack 4x 之路 ( 四 )
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 第2章 网络文档
  • 技术发展面试
  • 前端性能优化——回流与重绘
  • 区块链技术特点之去中心化特性
  • 算法-插入排序
  • 学习ES6 变量的解构赋值
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 因为阿里,他们成了“杭漂”
  • 自定义函数
  • C# - 为值类型重定义相等性
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AngularJS)Angular 控制器之间通信初探
  • (c语言)strcpy函数用法
  • (Forward) Music Player: From UI Proposal to Code
  • (七)Java对象在Hibernate持久化层的状态
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • . Flume面试题
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET连接数据库方式
  • .Net中的设计模式——Factory Method模式
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复