【数据结构 JavaScript版】- web前端开发精品课程【红点工场】 --javascript-- 链表实现

<!DOCTYPE html>
<html>

<head>
    <title></title>
</head>

<body>
    <script>
    //【数据结构 JavaScript版】- web前端开发精品课程【红点工场】 --javascript-- 链表实现

    // 对象存储的方式


    var linkSheet = function() {
        var head = null;
        var length = 0;
        var Node = function(element) {
            this.element = element;
            this.next = null;
        }

        // 链表尾部添加元素
        this.append = function(element) {
            var node = new Node(element)
            if (head == null) {
                head = node;
            } else {
                var current = head;
                while (current.next) {
                    current = current.next;
                }
            }
            length++;
        }

        //链表插入元素
        this.insert = function(position, element) {
            if (position >= -1 && position < length) {
                var node = new Node(element);
                if (position == 0) {
                    var current = head;
                    head = node;
                    head.next = current;
                } else {
                    var index = 0;
                    var current = head;
                    var previous = null;
                    while (index < position) {
                        previous = current;
                        current = current.next;
                        index++;
                    }
                    previous.next = node;
                    node.next = current;
                }
                length++;
            }
        }


        // 移除下标元素
        this.removeAt = function(position){
        	if(position>-1&&position<length){
        		if(position==0){
        			var current = head;
        			head = current.next;
        		}
        		else{
        			var current = head;
        			var previous = null;
        			var index = 0;
        			while(index<position){
        				previous = current;
        				current = current.next;
        				index++;
        			}
        			previous.next= current.next;
        		}
        		length--;
        		return current;
        	}
        	return null;
        }

        // 获取元素下标
        this.indexOf = function(element){
        	var current = head;
        	var index = 0;
        	while(current){
        		if(current.element==element){
        			return index;
        		}
        		current= current.next;
        		index++;
        		return index;
        	}
        	return -1;
        }

       // 移除元素
       this.remove = function(element){
           return this.removeAt(this.indexOf(element));
       }

       // 判断为空
       this.isEmpty = function(){
       	return length==0;
       }

       // 获取长度
       this.size = function(){
       	return length;
       }


       // 返回头部

       this.getHead = function(){
       	return head;
       }


    }
    </script>
</body>

</html>

  

posted @ 2018-12-15 19:04  SunLike阿理旺旺  阅读(135)  评论(0编辑  收藏  举报