Home  >  Article  >  Backend Development  >  PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:24:051008browse

PHP implements doubly linked lists and stacks, and C language implements doubly linked lists

In the early days, I wrote an article about PHP implementing one-way linked lists and sorting one-way linked lists, Portal: http://www.cnblogs.com/yydcdut/p/3777760.html. I have written about the doubly linked list, and I will mention it again: http://www.cnblogs.com/yydcdut/p/3782661.html.

This time I will share the implementation of doubly linked lists and stacks. Although the code was written before, I found that the code written in PHP is easy to understand!

Two-way linked list                                                                                                    🎜> Double linked list insertion operation diagram:

<?<span>php
        </span><span>//</span><span>双向链表</span>
        <span>class</span><span> Hero
        {
            </span><span>public</span> <span>$pre</span>=<span>null</span>;<span>//</span><span>前指针</span>
            <span>public</span> <span>$no</span>;<span>//</span><span>排名</span>
            <span>public</span> <span>$name</span>;<span>//</span><span>名字</span>
            <span>public</span> <span>$next</span>=<span>null</span>;<span>//</span><span>后指针</span>
            
            <span>/*</span><span>*
            *构造函数,申明链表头
            </span><span>*/</span>
            <span>public</span> <span>function</span> __construct(<span>$no</span>='',<span>$name</span>=''<span>)
            {
                </span><span>$this</span>->no=<span>$no</span><span>;
                </span><span>$this</span>->name=<span>$name</span><span>;
            }
            </span><span>/*</span><span>*
            *插入
            </span><span>*/</span>
            <span>static</span> <span>public</span> <span>function</span> addHero(<span>$head</span>,<span>$hero</span><span>)
            {
                </span><span>$cur</span> = <span>$head</span><span>;
                </span><span>$isExist</span>=<span>false</span><span>;
                </span><span>//</span><span>判断目前这个链表是否为空</span>
                <span>if</span>(<span>$cur</span>-><span>next</span>==<span>null</span><span>)
                {
                    </span><span>$cur</span>-><span>next</span>=<span>$hero</span><span>;
                    </span><span>$hero</span>->pre=<span>$cur</span><span>;
                }
                </span><span>else</span><span>
                {
                    </span><span>//</span><span>如果不是空节点,则安排名来添加
                    //找到添加的位置            </span>
                    <span>while</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
                    {
                        </span><span>if</span>(<span>$cur</span>-><span>next</span>->no > <span>$hero</span>-><span>no)
                        {</span><span>//</span><span>如果大于了排名,跳出</span>
                            <span>break</span><span>;
                        }
                        </span><span>else</span> <span>if</span>(<span>$cur</span>-><span>next</span>->no == <span>$hero</span>-><span>no)
                        {</span><span>//</span><span>如果等于排名,则代表有这个元素了</span>
                            <span>$isExist</span>=<span>true</span><span>;
                            </span><span>echo</span> "<br>不能添加相同的编号"<span>;
                        }
                        </span><span>$cur</span>=<span>$cur</span>-><span>next</span><span>;
                    }
                    </span><span>if</span>(!<span>$isExist</span><span>)
                    {</span><span>//</span><span>如果元素不存在,执行插入操作</span>
                        <span>if</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
                        {</span><span>$hero</span>-><span>next</span>=<span>$cur</span>-><span>next</span><span>;}
                        </span><span>$hero</span>->pre=<span>$cur</span><span>;
                        </span><span>if</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
                        {</span><span>$hero</span>-><span>next</span>->pre=<span>$hero</span><span>;}
                        </span><span>$cur</span>-><span>next</span>=<span>$hero</span><span>;            
                    }
                }
            }
            </span><span>//</span><span>遍历</span>
            <span>static</span> <span>public</span> <span>function</span> showHero(<span>$head</span><span>)
            {
                </span><span>$cur</span>=<span>$head</span><span>;
                </span><span>while</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
                {
                    </span><span>echo</span> "<br>编号:".<span>$cur</span>-><span>next</span>->no."名字:".<span>$cur</span>-><span>next</span>-><span>name;
                    </span><span>$cur</span>=<span>$cur</span>-><span>next</span><span>;
                }
            }        
            </span><span>static</span> <span>public</span> <span>function</span> delHero(<span>$head</span>,<span>$herono</span><span>)
            {
                </span><span>$cur</span>=<span>$head</span><span>;
                </span><span>$isFind</span>=<span>false</span><span>;
                </span><span>while</span>(<span>$cur</span>!=<span>null</span><span>)
                {
                    </span><span>if</span>(<span>$cur</span>->no==<span>$herono</span><span>)
                    {
                        </span><span>$isFind</span>=<span>true</span><span>;
                        </span><span>break</span><span>;
                    }
                    </span><span>//</span><span>继续找</span>
                    <span>$cur</span>=<span>$cur</span>-><span>next</span><span>;
                }
                </span><span>if</span>(<span>$isFind</span><span>)
                {
                    </span><span>if</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
                    {</span><span>$cur</span>->next_pre=<span>$cur</span>-><span>pre;}
                    </span><span>$cur</span>->pre-><span>next</span>=<span>$cur</span>-><span>next</span><span>;
                }
                </span><span>else</span><span>
                {</span><span>echo</span> "<br>没有找到目标"<span>;}            
            }
        }
        </span><span>$head</span> = <span>new</span><span> Hero();
        </span><span>$hero1</span> = <span>new</span> Hero(1,'1111'<span>);
        </span><span>$hero3</span> = <span>new</span> Hero(3,'3333'<span>);
        </span><span>$hero2</span> = <span>new</span> Hero(2,'2222'<span>);
        Hero</span>::addHero(<span>$head</span>,<span>$hero1</span><span>);
        Hero</span>::addHero(<span>$head</span>,<span>$hero3</span><span>);
        Hero</span>::addHero(<span>$head</span>,<span>$hero2</span><span>);
        Hero</span>::showHero(<span>$head</span><span>);
        Hero</span>::delHero(<span>$head</span>,2<span>);
        Hero</span>::showHero(<span>$head</span><span>);
</span>?>

<span>if</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
    </span><span>$hero</span>-><span>next</span>=<span>$cur</span>-><span>next</span><span>;
</span><span>$hero</span>->pre=<span>$cur</span><span>;
 </span><span>if</span>(<span>$cur</span>-><span>next</span>!=<span>null</span><span>)
    </span><span>$hero</span>-><span>next</span>->pre=<span>$hero</span><span>;
</span><span>$cur</span>-><span>next</span>=<span>$hero</span>;

if

(PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial$cur->next!=null) $cur->next->pre=$cur->pre; $cur->pre->next=$cur->next;

Stack                                                                                                       🎜>

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial I am the dividing line between the king of heaven and the tiger on earth. "PHP Implementation of Linked List" Portal: http://www.cnblogs.com/yydcdut/p/3777760.html

<?<span>php

    </span><span>class</span><span> myStack
    {
        </span><span>private</span> <span>$top</span>=-1<span>;
        </span><span>private</span> <span>$maxSize</span>=5<span>;
        </span><span>private</span> <span>$stack</span>=<span>array</span><span>();
        </span><span>public</span> <span>function</span> push(<span>$val</span><span>)
        {
            </span><span>if</span>(<span>$this</span>->top == <span>$this</span>-><span>maxSize)
            {
                </span><span>echo</span> "<br>已经满了"<span>;
            }
            </span><span>$this</span>->top++<span>;
            </span><span>$this</span>->stack[<span>$this</span>->top]=<span>$val</span><span>;
        }
        
        </span><span>public</span> <span>function</span><span> showStack()
        {
            </span><span>if</span>(<span>$this</span>->top==-1<span>)
            {
                </span><span>echo</span> "<br>栈为空!"<span>;
                </span><span>return</span><span> ;
            }
            </span><span>for</span>(<span>$i</span>=<span>$this</span>->top;<span>$i</span>>-1;<span>$i</span>--<span>)
            {
                </span><span>echo</span> "<br>stack[".<span>$i</span>."]=".<span>$this</span>->stack[<span>$i</span><span>];
            }
        }
        
        </span><span>public</span> <span>function</span><span> pop()
        {
            </span><span>if</span>(<span>$this</span>->top==-1<span>)
            {
                </span><span>echo</span> "<br>栈为空!"<span>;
                </span><span>return</span><span> ;
            }
            
            </span><span>$val</span>=<span>$this</span>->stack[<span>$this</span>-><span>top];
            </span><span>$this</span>->top--<span>;
            </span><span>echo</span> "<br>弹出".<span>$val</span><span>;
        }
    }

    </span><span>$mystack</span> = <span>new</span><span> myStack;
    </span><span>$mystack</span>->push('111'<span>);
    </span><span>$mystack</span>->push('222'<span>);
    </span><span>$mystack</span>-><span>showStack();
    </span><span>$mystack</span>-><span>pop();
    </span><span>$mystack</span>-><span>pop();
</span>?>

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial

Please indicate the source for reprinting: Please indicate the source for reprinting: http://www.cnblogs.com/yydcdut

Using a doubly linked list to simulate a stack in java

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial里只PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial实现了StackPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial部分功能

public class Stack{

private Node top;

public Stack(){
this.top = null;
}

public void push(Node node){
if(node == null)
return;
if(this.top == null){
this.top = node;
node.setNext(null);
node.setPre(null);
}
else{
this.top.setNext(node);
node.setPre(this.top);
node.setNext(null);
this.top = node;
}
}

public Node pop(){
if(this.top == null)
return null;
Node curr = this.top;
Node pre = curr.getPre();
pre.setNext(null);
this.top = pre;
return curr;
}

public Node top(){
return this.top;
}

public boolean isEmpty(){
return this.top == null ? true : false;
}

public void empty(){
this.top = null;
}

public static void main(String[] args){
Stack stack = new Stack();
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);

System.out.println(stack.isEmpty());
stack.push(n1);
System.out.println(stack.top().getValue());
stack.push(n2);
stack.push(n3);
System.out.println(stack.pop().getValue());
stack.empty();
}
}

class Node {
private int value;
private Node next;
private Node pre;

public Node(int value, Node next, Node pre){
this.value = value;
this.next = next;
this.pre = pre;
}

public Node(int value){
this.value = value;
this.next = null;
this.pre = null;
}

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}

public Node getPre() {
return pre;
}

public void setPre(Node pre) {
this.pre = pre;
}
}

用链表实现堆栈或队列是什

Stack or queue PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial data requires PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial a container to hold PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial
than PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial using built-in array to implement queue
int a[100] ;
PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialenqueue operationPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial is implemented as follows: PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialall existing elements are PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial moved to PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial positionsPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialNew elements are inserted into
(when PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial is less efficient)

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialcontainer selectionPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutoriallinked listPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial is entered The team operation PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial is implemented like this:
constructs PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial chain node PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial (PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialCPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial structure Body) PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialTo be added to the queuePHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialFill in the elementPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialNew nodePHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialReuse the linked listPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialInsert operationPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialInsert new node into the linked list

PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialUsing linked list to implement stack or queuePHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialholding dataPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialContainer is selected as linked listPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialUsing linked listPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial to insert nodes and delete nodes. The corresponding operations of stack and queuePHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial

are better than PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial using a linked list to implement queuePHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialCPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialwritingPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialthe next fewPHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorialfunctions
//Enqueue
void insert (points to the queue (linked list) PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial pointer PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial to be enqueued PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial element);
//dequeues
void delete (points to the queue (linked list) PHP implements doubly linked list and stack, C language implements doubly linked list_PHP tutorial pointer);

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/827942.htmlTechArticlePHP implements doubly linked lists and stacks, and c language implements doubly linked lists. In the early stage, I wrote a PHP implementation of one-way linked lists and sorting. An article on one-way linked lists, portal: http://www.cnblogs.com/yydc...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn