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

[日常] 算法-单链表的创建-尾插法

1.创建头结点,头结点的next指向null

2.把头结点赋值给一个中间变量

3.循环中创建结点, 中间变量的next指向新结点

4.新结点覆盖中间变量

c语言版:

#include <stdio.h>
#include <stdlib.h>

typedef struct Node{
        char* data;
        struct Node* next;
} Node;
typedef Node* LinkList;
int main(){
        //指针所占字节与系统有关,一般32位系统,一个指针占4个字节
        printf("%d\n",sizeof(Node));//输出 4+4=8
        //头结点
        LinkList head=(LinkList)malloc(sizeof(Node));
        //第一个结点
        Node* node1=(Node*)malloc(sizeof(Node));
        node1->data="aaa";
        node1->next=NULL;

        //第二个结点
        Node* node2=(Node*)malloc(sizeof(Node));
        node2->data="bbb";
        node2->next=NULL;

        head->next=node1;
        node1->next=node2;

        //遍历
        while(head->next){
                head=head->next;
                printf("%s\n",head->data);
        }   

        //2.尾插法
        LinkList list=(LinkList)malloc(sizeof(Node));
        list->next=NULL;
        LinkList temp=list;//中间过渡
        for(int i=0;i<10;i++){
                LinkList node=(LinkList)malloc(sizeof(Node));

                char* str=(char*)malloc(4);//给字符串分配内存
                sprintf(str,"aaa%d",i);
                node->data=str;
                temp->next=node;
                temp=node;//循环的时候,每次覆盖成最新的结点
        }   

        //遍历
        while(list->next){
                list=list->next;
                printf("%s\n",list->data);
        }   
}

go语言版:

package main

import(
        "fmt"
)

type Node struct{
        data string
        next *Node
}
type LinkList *Node
func main(){
        list:=new(Node)
        list.next=nil
        var node LinkList
        temp:=list
        for i:=0;i<10;i++{
                node=new(Node)
                node.data="aaa"+fmt.Sprintf("%d",i)
                node.next=nil
                temp.next=node
                temp=node
        }   

        //遍历
        for{
                list=list.next
                fmt.Println(list.data)
                if list.next==nil{
                        break
                }   
        }   
}

php语言版:

<?php
class Node{
        public $data;
        public $next;
}
//尾插法
$list=new Node();
$list->next=null;
$temp=$list;
for($i=0;$i<10;$i++){
        $node=new Node();
        $node->data="aaa{$i}";
        $node->next=null;
        $temp->next=$node;
        $temp=$node;
}

//遍历
while($list->next){
        $list=$list->next;
        echo $list->data."\n";
}

  

  

  

转载于:https://www.cnblogs.com/taoshihan/p/9166298.html

相关文章:

  • 苹果发布Core ML 2
  • es6 入坑笔记(三)---数组,对象扩展
  • 从MySQL临时表谈到filesort
  • 在JPEG图片中嵌入HTML
  • Spring Bean生命周期详解
  • linux设置预留端口号,防止监听端口被占用 ip_local_reserved_ports
  • 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间
  • Android开发者用RxJs和Python撸了一个网站
  • Vue.js 2.x:组件的定义和注册(详细的图文教程)
  • Nginx负载均衡,ssl原理,生成ssl密钥对,Nginx配置ssl
  • easyui-tree 修改图标
  • egret--一次性给多个对象添加点击事件
  • 《Python从小白到大牛》第3章 第一个Python程序
  • webpack4.X初学之配置VUE开发环境
  • val和var和Java
  • 10个确保微服务与容器安全的最佳实践
  • canvas 绘制双线技巧
  • ES6系列(二)变量的解构赋值
  • Javascript基础之Array数组API
  • JDK 6和JDK 7中的substring()方法
  • React组件设计模式(一)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • windows下使用nginx调试简介
  • 闭包--闭包之tab栏切换(四)
  • 基于组件的设计工作流与界面抽象
  • 解析带emoji和链接的聊天系统消息
  • 两列自适应布局方案整理
  • 一个完整Java Web项目背后的密码
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 云大使推广中的常见热门问题
  • nb
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Python 之网络式编程
  • 数据库巡检项
  • ​secrets --- 生成管理密码的安全随机数​
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #includecmath
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (力扣)1314.矩阵区域和
  • (七)c52学习之旅-中断
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)EOS中账户、钱包和密钥的关系
  • ***原理与防范
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .Net IOC框架入门之一 Unity
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net Remoting常用部署结构
  • .NET 常见的偏门问题
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 设计一套高性能的弱事件机制