前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[日常] 算法-单链表的创建

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

作者头像
唯一Chat
发布2019-09-10 12:23:32
5540
发布2019-09-10 12:23:32
举报
文章被收录于专栏:陶士涵的菜地

1. 先创建一个头结点,不需要有数据域,头结点的next指向null

2.循环中创建结点,把头结点的next赋值给 新结点的next,相当于新结点的next指向了(头结点next所指向的)

3.把新结点赋值给头结点的next ,相当于头结点的next指向了新结点,这样就串起来了

4.头结点就相当于整个链表

5.循环遍历的时候,头结点没有数据可以直接跳过,把结点的next赋值给结点,相当于向下移动了一项

c语言版:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node{
        char* data;
        struct Node* next;
} Node;
typedef Node* LinkList;
int main(){
        //1.创建一个链表
        LinkList head=(LinkList)malloc(sizeof(Node));//分配内存
        //malloc(sizeof(Node))是给头结点分配内存,head是指向头结点的指针叫头指针
        head->next=NULL;//数据域加指针域叫头结点

        LinkList a1=(LinkList)malloc(sizeof(Node));
        a1->data="aaa";
        a1->next=NULL;

        head->next=a1;
        //a1是指向第一个结点的指针,赋值给head->next,就相当于head->next指向了a1

        LinkList a2=(LinkList)malloc(sizeof(Node));
        a2->data="bbb";
        a2->next=NULL;
        a1->next=a2;
        //a2是指向第二个结点的指针,赋值给a1->next,就相当于a1->next指向了a2

        //2.循环创建一个链表
        LinkList list=(LinkList)malloc(sizeof(Node));
        list->next=NULL;
        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;
                node->next=list->next;

                list->next=node;
        }   

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

        return 0;
}

go语言版:

代码语言:javascript
复制
package main
import(
        "fmt"
)

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

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

php语言版:

代码语言:javascript
复制
<?php
class Node{
        public $data;
        public $next;
}

$list=new Node();
$list->next=null;

for($i=0;$i<10;$i++){
        $node=new Node();
        $node->data="aaa{$i}";
        $node->next=$list->next;
        $list->next=$node;
}

//遍历
while($list->next){
        $list=$list->next;
        echo $list->data."\n";
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档