算法-单链表的创建-尾插法详解编程语言

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://blog.ytso.com/12493.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论