替换空格和从尾到头打印链表

function replaceSpace(str)
{
    
    return  str.replace(/\s/g,'%20')
}

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

刷到这道题的时候,顺便复习了一下单链表,以下是单链表的代码

 //单链表
function SingLinkedList() {

	//定义节点函数,一个节点由数据域和指针域组成
	function node(data) {
		this.data = data;
		this.next = null;
	}
	
	var head = null,length=0;
	
	//添加,这里是在尾部添加,所以只要让原有的单链表的最后一个节点的next指向新的节点就可以了,最后将单链表的长度加一
	this.append=function(value){
		var newnode = new node(value);
		  if(head==null){
		  	head = newnode;
		  }else{
		  	var temp=head;
		  	 while(temp.next!=null){
		  	 	temp=temp.next;
		  	 }
		  	 temp.next = newnode;
		  }
		  length++;
		  return true;
	}

	//插入,这里是指点的位置插入,先判断要插入的位置是否合理,如果合理的话,先判断是不是插在第一个位置,如果是的话,
	//就将新节点的next指向原有链表的第一个节点,然后head指向新节点,如果不是插在第一个位置,则将要插入的位置的前后两个节点找出来,然后先
	//将新节点的next指向后一个节点,然后前一个节点的next指向新节点,插入成功之后,单链表的长度加一
	this.insert = function(value, pos) {
		if(pos >= 0 && pos < length) {
			var newnode = new node(value);
			var temp = head; //定义一个临时变量
			var p,j=0,v;
			if(pos==0){
				newnode.next=temp;
				head=newnode;
			}else{
				while(j++<pos){
					p=temp;
					temp=temp.next;
				}
				newnode.next=temp;
				p.next=newnode;
			}
			length++;
			return true;
		}else{
			return false;
		}
	}
	
	//删除,先判断要删除的位置是否存在,再判断删除的是不是第一个,如果是,则将原链表的第一个节点的next指向下一个节点,
	//然后head等于下一个节点,如果不是第一个节点,就找到要删除的节点的前一个节点,然后将该节点的next指向下一个的下一个,删除成功后,链表的长度减一
	this.del=function(pos){
		if(pos>=0&pos<length){
			var temp=head,j=0,p;
			if(pos==0){
				head=temp.next;
			}else{
				while(j++<pos){
					p=temp;
					temp=temp.next;
				}
				p.next=temp.next;
			}
			length--;
			return true;
		}else{
			return false
		}
	}
   
   //寻找,先判断链表是否存在值,如果存在就一直循环,直到找到该节点
   
   this.find=function(value){
   	   var temp=head;
   	   if(temp==null){
   	   	return false;
   	   }else{
   	   	while(temp!=null){
   	   		if(temp.data==value){
   	   			return temp;
   	   		}else{
   	   			temp=temp.next;
   	   		}
   	   	}
   	   }
   }
   
   //遍历,判断节点是否为空,如果为空则结束遍历
   this.print=function(){
   	var temp = head;
   	  	while(temp!=null){
   	  		console.log(temp.data);
   	  		temp=temp.next;
   	  	}
	}
   }

题目的答案:

function printListFromTailToHead(head)
{
    var array=[];
    var p = head
    while(p!=null){
        array.push(p.val)
        p=p.next
    }
      
    return array.reverse()
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值