链串上的基本运算算法设计与单链表类似,仅以串插入算法为例说明。16/62
链串上的基本运算算法设计与单链表类似,仅以串插入算法为例说明。 16/62
串插入:链串在序号位置插入串theadhead串对象s:串对象t:t1=s.Insstr(2,t)head串对象t1:17/62
t1=s.InsStr(2,t) 串对象s: a head b c d ∧ 串对象t: 1 head 2 3 ∧ 串对象t1: a head b 1 2 3 c d ∧ 串插入:链串在序号i位置插入串t 17/62
实现:先创建一个空串s,当参数正确时,采用尾插法建立结果串s:(1)将当前链串的前个结点复制到s中。(2)将t中所有结点复制到s中。(3)再将当前串的余下结点复制到s中。1 /串插入public Linkstringclass Insstr(int i,Linkstringclass t)Linkstringclass s=new Linkstringclass();if (i<o ll i>size)//参数不正确时返回空串return s;LinkNodep=head.next,pl=t.head.next,q,r;//r指向新建链表的尾结点r=s.head;for (int k=0; k<i;k++)//将当前链串的前i个结点复制到s(q=newLinkNode(p.data)//将q结点插入到尾部r.next=q; r=q;p=p.next;718/62
public LinkStringClass InsStr(int i,LinkStringClass t) //串插入 { LinkStringClass s=new LinkStringClass(); if (i<0 || i>size) //参数不正确时返回空串 return s; LinkNode p=head.next,p1=t.head.next,q,r; r=s.head; //r指向新建链表的尾结点 for (int k=0; k<i; k++) //将当前链串的前i个结点复制到s { q=new LinkNode(p.data); r.next=q; r=q; //将q结点插入到尾部 p=p.next; } 实现:先创建一个空串s,当参数正确时,采用尾插法建立结果串s: (1)将当前链串的前i个结点复制到s中。 (2)将t中所有结点复制到s中。 (3)再将当前串的余下结点复制到s中。 18/62
while (pi!=null)//将t中所有结点复制到sq=new LinkNode(p1.data);1/将q结点插入到尾部r.next=q;r=q;p1=p1.next;7/ /将p及其后的结点复制到swhile (p!=null)q=new LinkNode(p.data);//将q结点插入到尾部r.next=q;r=q;p=p.next;s.size=size+t.size;//尾结点的next置为空r.next=null;//返回新建的链串return s;Y19/62
while (p1!=null) //将t中所有结点复制到s { q=new LinkNode(p1.data); r.next=q; r=q; //将q结点插入到尾部 p1=p1.next; } while (p!=null) //将p及其后的结点复制到s { q=new LinkNode(p.data); r.next=q; r=q; //将q结点插入到尾部 p=p.next; } s.size=size+t.size; r.next=null; //尾结点的next置为空 return s; //返回新建的链串 } 19/62
4.3Java中的字符串4.3.1 StringJava中提供了String字符串类(位于java.lang命名空间中),所有字符串字面值(如"abc")都作为此类的实例实现28/62
Java中提供了String字符串类(位于java.lang命名空间 中),所有字符串字面值(如"abc")都作为此类的实例实现。 20/62