数据结构是计算机存储、组织数据的方式,结构不同那么数据的检索方式和效率都不一样,

常用的数据结构有  数组 、栈 、队列 、链表 、树、堆

今天讲下单链表,单链表是一种链式存取的数据结构, 跟顺序链表完全部一样 是一种非顺序结构存储

单链表是结点表示数据,结点包括数据和后继元素构成(用来存放下一个节点的位置)

链表的缺点失去顺序表读取的优点,增加了结点的地址,空间开销比较大,但比顺序存储空间的使用要相对灵活。

链表主要操作主要是遍历操作,效率降低了

单链表的表现形式,这种结构不像顺序结构连续存储,是一种非连续,非顺序的存储结构  例如以下,

增加节点   删除节点 

 

代码实现

 1 <?php
 2 class node{
 3      public $id;
 4      public $next;
 5      public function __construct($id=null,$next=null){
 6          $this->id=$id;
 7          $this->next=$next;
 8      }
 9 }
10 class singleLinkedList
11 {
12     public $header = null;
13 
14     public function addLink($node,$index=0)
15     {   $i = 0;
16         if(is_null($this->header))
17         {
18             $this->header = $node;
19         }else{
20             $curr = $this->header;
21             while ($curr->next != null) 
22             {
23                 $i ++;
24                 if($i<=$index)
25                 {
26                     break;
27                 }
28                 $curr = $curr->next;
29              }
30             $node->next = $curr->next;
31             $curr->next = $node; 
32         }
33 
34     }
35 
36     public function delLink($index=1)
37     {
38         $i = 1;
39         $curr = $this->header;
40         while ($curr->next != null) 
41         {
42             if($i<=$index)
43             {              
44                 $tmp = $curr->next;
45                 break;
46             }
47             $curr = $curr->next;
48             $i ++;
49          }
50          $curr->next=$tmp->next;
51     }
52 }
53 
54 
55 $l = new singleLinkedList(); 
56 $l->addLink (new node(1));
57 $l->addLink (new node(2));
58 $l->addLink (new node(3));
59 $l->addLink (new node(4));
60 $lists->addLink (new node(5));
61 $lists->addLink (new node(6));
62 $lists->delLink ();
63 print_r($lists->header);die;

 

posted on 2018-10-23 14:40  nike_9527  阅读(165)  评论(0编辑  收藏  举报