花了一天时间写了一个vbscript模拟单链表的程序,请大家指点一下。

时间:2022-07-16 07:31:55
刚刚看了几页数据结构,有点心得,用vbscript模拟了单链表的操作。
但由于身旁无人指导,无法判断程序的好坏。
所以贴上来请各位高手指点一下,还有哪里需要改进的。
我会尽量作到指点者人人有分的,谢谢。

注:以下程序copy到记事本上存为html文件即可运行。
以下的插入,修改,删除等都是假设在不了解链表长度的情况下进行操作的。


<script language=vbscript>
'-----------------------------------------------------
' VBscript模拟单链表
'-----------------------------------------------------
Option Explicit
dim link '链表
dim i_number '链表长度(生成链表时用)
dim a_link '链表单元值(生成链表时用)
dim insert_key '插入位置
dim edit_key '修改位置
dim del_key '删除位置

insert_key=6
edit_key=6
del_key=6

set link=nothing

'-----------------------------------------------------
' 链表类
'-----------------------------------------------------
class c_learn
Public name,oldname
end class

'-----------------------------------------------------
' 显示链表
'-----------------------------------------------------
sub show_link(s_link)
window.document.write s_link.name & "&nbsp;&nbsp;&nbsp;"
if s_link.oldname is nothing then exit sub
show_link(s_link.oldname)
end sub

'-----------------------------------------------------
' 生成链表
'-----------------------------------------------------
for i_number=10 to 1 step -1
set a_link=new c_learn
a_link.name=i_number
set a_link.oldname=link
set link=a_link
set a_link=nothing
next

'-----------------------------------------------------
' 插入数据
'-----------------------------------------------------
sub insert_link(c_data,c_key)
dim while_x 'while的结束标识
dim str_obj '插入的位置
dim link_count '位置累计
dim new_link '插入单元
link_count=c_key-2
set new_link=new c_learn
new_link.name=c_data


if c_key<=1 then
'如果插入的位置小于或等于一,将在链表的首部插入
set new_link.oldname=link
set link=new_link
while_x=1
end if

while while_x=""
if link_count<=0 or (eval("link"&str_obj).oldname is nothing) then
set new_link.oldname=eval("link"&str_obj).oldname
set eval("link"&str_obj).oldname=new_link
while_x=1
end if
str_obj=str_obj&".oldname"
link_count=link_count-1
wend
set new_link=nothing
end sub

'-----------------------------------------------------
' 修改数据
'-----------------------------------------------------
sub edit_link(c_data,c_key)
dim while_x 'while的结束标识
dim str_obj '修改的位置
dim link_count '位置累计

link_count=c_key-1

if link_count<=-1 then while_x=1
while while_x=""
if eval("link"&str_obj) is nothing then while_x=1
if link_count<=0 and while_x="" then
eval("link"&str_obj).name=c_data
while_x=1
end if
str_obj=str_obj&".oldname"
link_count=link_count-1
wend
end sub

'-----------------------------------------------------
' 删除数据
'-----------------------------------------------------
sub del_link(c_key)
dim while_x 'while的结束标识
dim str_obj '修改的位置
dim link_count '位置累计

link_count=c_key-2

if link_count<=-1 then while_x=1
while while_x=""
if eval("link"&str_obj) is nothing then while_x=1
if link_count<=0 and while_x="" then
if eval("link"&str_obj).oldname is nothing then
set eval("link"&str_obj).oldname=nothing
else
set eval("link"&str_obj).oldname=eval("link"&str_obj).oldname.oldname
end if
while_x=1
end if
str_obj=str_obj&".oldname"
link_count=link_count-1
wend
end sub

'-----------------------------------------------------
window.document.write "原始链:"
call show_link(link)
window.document.write "<p>"

window.document.write "插入操作:<br>"
call insert_link("插入的数据",insert_key)
window.document.write "&nbsp;&nbsp;插入位置:"&insert_key&"<br>&nbsp;&nbsp;"
call show_link(link)
window.document.write "<br>"

window.document.write "修改操作:<br>"
call edit_link("修改的数据",edit_key)
window.document.write "&nbsp;&nbsp;修改位置:"&edit_key&"<br>&nbsp;&nbsp;"
call show_link(link)
window.document.write "<br>"

window.document.write "删除操作:<br>"
call del_link(del_key)
window.document.write "&nbsp;&nbsp;删除位置:"&del_key&"<br>&nbsp;&nbsp;"
call show_link(link)
window.document.write "<br>"
</script>

7 个解决方案

#1


调试一下!再讲!

#2


原始链:1   2   3   4   5   6   7   8   9   10   
插入操作:
  插入位置:6
  1   2   3   4   5   插入的数据   6   7   8   9   10   
修改操作:
  修改位置:6
  1   2   3   4   5   修改的数据   6   7   8   9   10   
删除操作:
  删除位置:6
  1   2   3   4   5   6   7   8   9   10   

我把它保存为*.htm以后
就出现了上面的样子!有什么作用???

#3


to 空间
    这个就是模拟单链表的生成,插入,修改及删除的操作后生成的结果。
链表是数据结构里说到的一种数据存储方式。但是书里是用c实现的,我是想把它应用在vbscript里。所以才写了这一大段东西。请多多指教。

#4


老兄,劝你不要把code搞上去,很少有人去看的,有什么其他的问题可以去问,要知道,看别人的程序是很烦。。。。。。:)

#5


人家是自己的成果,不是来求助的

#6


唉!看来是没办法了,结束吧。

#7


唉!看来是没办法了,结束吧。

#1


调试一下!再讲!

#2


原始链:1   2   3   4   5   6   7   8   9   10   
插入操作:
  插入位置:6
  1   2   3   4   5   插入的数据   6   7   8   9   10   
修改操作:
  修改位置:6
  1   2   3   4   5   修改的数据   6   7   8   9   10   
删除操作:
  删除位置:6
  1   2   3   4   5   6   7   8   9   10   

我把它保存为*.htm以后
就出现了上面的样子!有什么作用???

#3


to 空间
    这个就是模拟单链表的生成,插入,修改及删除的操作后生成的结果。
链表是数据结构里说到的一种数据存储方式。但是书里是用c实现的,我是想把它应用在vbscript里。所以才写了这一大段东西。请多多指教。

#4


老兄,劝你不要把code搞上去,很少有人去看的,有什么其他的问题可以去问,要知道,看别人的程序是很烦。。。。。。:)

#5


人家是自己的成果,不是来求助的

#6


唉!看来是没办法了,结束吧。

#7


唉!看来是没办法了,结束吧。