[说明]
函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表A中关键码为key 1的节点开始的len个节点,按原顺序移至线性表B中关键码为key 2的节点之前。若移动成功,则返回0;否则返回-1。
线性表的存储结构为带头节点的单链表,La为表A的头指针,Lb为表B的头指针。单链表节点的类型定义如下。
typedef struct node
int key;
struct node*next;
*LinkedList;
[C程序]
int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len
LinkedList p, q, S, prep, pres;
int k;
if (!La ->next || !Lb ->next || len<=0)
return-l;
p = La->next;
prep = La;
while (p && p->key != key1)/* 查找表A中键值为key1的节点 */
prep = p;
p = p->next;
if (!p)
return -1; /* 表A中不存在键值为key1的节点 */
q = p;
k = 1;
while (q && (1) ) /* 在表A中找出待删除的len个节点 */
(2) ;
k++;
if (!q)
return -1; /* 表A中不存在要被删除的len个节点 */
S = Lb ->next;
(3) ;
while (s && s->key != key2)/* 查找表B中键值为key2的节点 */
pres = s;
s = e->next;
if (!s)
return -1; /* 表B中不存在键值为key2的节点 */
(4) q->next; /* 将表A中的len个节点删除 */
q->next= (5)
pres->next = p; /* 将len个节点移至表B */
return 0;