当前位置 : 主页 > 网络编程 > JavaScript >

储存字符串的 javascript 单链表

来源:互联网 收集:自由互联 发布时间:2021-07-03
原创。 在储存字符串的java脚本(javascript)单链表的定义中,一种插入方法:orderInset( data) 按给定字符串 data 的大小,将其放到合适的位置。这样,可以保证单链表始终是有序的。无须再
原创。
在储存字符串的java脚本(javascript)单链表的定义中,一种插入方法:orderInset( data) 按给定字符串 data 的大小,将其放到合适的位置。这样,可以保证单链表始终是有序的。无须再调用任何排序的方法。为英文文档的单词存储,提供一种有用的方法。
注意:
1. 仅适用于英文字母的字符串, 因为,汉字按UNICODE排序,似乎没有直观意义。
2. 比较两个字符串 s1 和 s2 的大小,可以直接用 s1 > s2, 如果第一个字符一样,再比较下一个字符...
3. 测试表明:如果查询方法写成:
 SList.prototype.search= function (data) {  
        var p = this.head;  
        while (p.data != data && p!=null) 
        p = p.next;
    return p; 
        } 
则此方法不能实现所有功能。因此,改写了一下代码,以便使程序正常工作。

1. [图片] linked_list_string.png    

2. [代码][JavaScript]代码    

<html>
<head>
    <title>Linked List</title>
    <meta charset="utf-8">
</head>
<body>
<script type="text/javascript">

function Node(data) {  
        this.data = data;  
        this.next = null;  
            }  
			
var SList =function SList() {  

        this.head = new Node("Dummy");  
            }  
SList.prototype.is_empty= function (){
	 document.write("is_empty");
	 return (this.head.next == NULL);
 }
SList.prototype.insertLast =function(data) {  
        var p = this.head;  
        while (p.next!=null) 
        p = p.next;
		p.next=new Node(data); 
        } 
SList.prototype.insertFirst =function(data) { 
		var p=new Node(data);  
        p.next = this.head.next;  
        this.head.next=p;
        } 
SList.prototype.orderInsert =function(data) {  
		var p = new Node(data); 
        var q = this.head;  
        while (q.next!=null && q.next.data<data) 
        q = q.next;
		p.next=q.next;
		q.next=p;
        } 	
 SList.prototype.traversal=function (){
	 var p=this.head;
	 while (p.next != null){
	 document.write( p.next.data + ", ");
	 p = p.next;
	 }
 }
 SList.prototype.search= function (data) {  
        var p = this.head;  
        while (p.data != data && p.next!=null) 
        p = p.next;
		if (p.data !=data)
        return null; 
		else
		return p; 
        } 
		
var s =  Array("geophysics","geology","physics",
 "biology","chemistry","computer science",
 "medical science","geodedic","geography");
 var list = new SList();
 for (var i=0; i<s.length; i++)
 list.orderInsert(s[i]);
 list.traversal();
 
 var ss="geochemistry";
 var p = list.search(ss);
 if (p)
 document.write("<br>"+p.data + " found.");
 else 
 document.write("<br>"+ss+" not found.");
 
</script>
</body>
</html>
网友评论