demo_c_2lists.htm
来自「Delphi脚本控件」· HTM 代码 · 共 112 行
HTM
112 行
<html>
<head>
<link rel=stylesheet type="text/css" href="styles.css">
</head>
<body>
<h3>
LISPPA: Two Way Linked lists (paxC).
</h3>
<hr>
<blockquote>
<pre>
<font color="blue"><b>variant</b></font> Insert(<font color="blue"><b>int</b></font> Value, <font color="blue"><b>variant</b></font> P){
<font color="blue"><b>variant</b></font> result = [Value, P];
<font color="blue"><b>if</b></font> (P != <font color="blue"><b>NULL</b></font>) P.Owner = result;
P = result;
<font color="blue"><b>return</b></font> result;
}
<font color="blue"><b>variant</b></font> Add(<font color="blue"><b>int</b></font> Value, <font color="blue"><b>variant</b></font> P){
<font color="blue"><b>if</b></font> (P == <font color="blue"><b>NULL</b></font>)
<font color="blue"><b>return</b></font> Insert(Value, P);
<font color="blue"><b>else</b></font> {
<font color="blue"><b>variant</b></font> result = Insert(Value, & P[1]);
result.Owner = P;
<font color="blue"><b>return</b></font> result;
}
}
<font color="blue"><b>variant</b></font> Remove(<font color="blue"><b>int</b></font> Value, <font color="blue"><b>variant</b></font> L){
<font color="blue"><b>variant</b></font> result = & Find(Value, L);
<font color="blue"><b>if</b></font> (result != <font color="blue"><b>NULL</b></font>) {
<font color="blue"><b>variant</b></font> temp = result.Owner;
<font color="blue"><b>reduced</b></font> result = result[1];
<font color="blue"><b>if</b></font> (result != <font color="blue"><b>NULL</b></font>) result.Owner = temp;
}
<font color="blue"><b>return</b></font> result;
}
<font color="blue"><b>variant</b></font> Find(<font color="blue"><b>int</b></font> Key, <font color="blue"><b>variant</b></font> P){
<font color="blue"><b>variant</b></font> result = & P;
<font color="blue"><b>while</b></font> (result != <font color="blue"><b>NULL</b></font>) {
<font color="blue"><b>if</b></font> (result[0] == Key) <font color="blue"><b>return</b></font> result;
result = & result[1];
}
<font color="blue"><b>return</b></font> <font color="blue"><b>NULL</b></font>;
}
<font color="blue"><b>void</b></font> StraightOrder(<font color="blue"><b>variant</b></font> A){
<font color="blue"><b>variant</b></font> P = A;
<font color="blue"><b>while</b></font> (P != <font color="blue"><b>NULL</b></font>) {
<font color="blue"><b>println</b></font> P[0];
P = P[1];
}
}
<font color="blue"><b>void</b></font> BackOrder(<font color="blue"><b>variant</b></font> A){
<font color="blue"><b>if</b></font> (A == <font color="blue"><b>NULL</b></font>) <font color="blue"><b>println</b></font> A;
<font color="blue"><b>else</b></font> {
<font color="blue"><b>variant</b></font> P = A;
<font color="blue"><b>while</b></font> (P[1] != <font color="blue"><b>NULL</b></font>) P = P[1];
<font color="blue"><b>while</b></font> (P != <font color="blue"><b>NULL</b></font>) {
<font color="blue"><b>println</b></font> P[0];
P = P.Owner;
}
}
}
<font color="blue"><b>variant</b></font> A = <font color="blue"><b>NULL</b></font>, P;
Add(300, & A);
Insert(100, & A);
Insert(50, & A);
<font color="blue"><b>println</b></font> A;
BackOrder(A);
P = Find(300, A);
Add(400, & P);
<font color="blue"><b>println</b></font> A;
BackOrder(A);
P = Find(300, A);
Add(350, & P);
<font color="blue"><b>println</b></font> A;
BackOrder(A);
P = Find(100, A);
Add(150, & P);
<font color="blue"><b>println</b></font> A;
BackOrder(A);
Remove(100, A);
<font color="blue"><b>println</b></font> A;
BackOrder(A);
<font color="blue"><b>println</b></font> A;
StraightOrder(A);
</pre>
</blockquote>
<p>
<HR>
<font size = 1 color ="gray">
Copyright © 1999-2005
VIRT Laboratory. All rights reserved.
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?