尾插法建表从一个空表开始,依次读取数组g中的元素,生成新结点,将读取的数据存放到新结点的数据成员中。将新结点S插入到当前链表的表尾上。ahead需要设置一个尾指针七11/85
从一个空表开始,依次读取数组a中的元素。 生成新结点s,将读取的数据存放到新结点的数据成员中。 将新结点s插入到当前链表的表尾上。 head . ai s 需要设置一个尾指针t 11/85
public void CreateListR(E[] a)//尾插法:由数组a整体建立单链表LinkNode<E> S,t;t=head;//t始终指向尾结点,开始时指向头结点for (int i=o;i<a.length;i++)/循环建立数据结点S//新建存放a[i]元素的结点sS=new LinkNode<E>(a[i]);中//将s结点插入t结点之后t.next=s;t=s;7//将尾结点的next置为nullt.next=null;7a=('a',"b','c','d'),调用CreateListR(a)headabcda头插法建立的单链表中数据结点的次序与a数组中的次序正好相同12/85
public void CreateListR(E[] a) //尾插法:由数组a整体建立单链表 { LinkNode<E> s,t; t=head; //t始终指向尾结点,开始时指向头结点 for (int i=0;i<a.length;i++) //循环建立数据结点s { s=new LinkNode<E>(a[i]); //新建存放a[i]元素的结点s t.next=s; //将s结点插入t结点之后 t=s; } t.next=null; //将尾结点的next置为null } a=('a','b','c','d'),调用CreateListR(a) head a b c d ∧ 头插法建立的单链表中数据结点的次序与a数组中的次序正好相同 12/85
3.线性表基本运算在单链表中的实现查找序号为i(oi≤n-1,n为单链表中数据结点个数)的结点privateLinkNode<E>geti(int i)//返回序号为i的结点(LinkNode<E> p=head;int j=-1;while (j<i){j++;p=p.next;return p;head→ai13/85
3. 线性表基本运算在单链表中的实现 查找序号为i(0≤i≤n-1,n为单链表中数据结点个数)的结点 private LinkNode<E> geti(int i) //返回序号为i的结点 { LinkNode<E> p=head; int j=-1; while (j<i) { j++; p=p.next; } return p; } head . ai . p -1 0 i 13/85
(1)将元素e添加到线性表末尾Add(e)//在线性表的末尾添加一个元素epublic void Add(E e)//新建结点sLinkNode<E> s=new LinkNode<E>(e);LinkNode<E>p=head;//查找尾结点pwhile(p.next!=null)p=p.next;//在尾结点之后插入结点sp.next=s;14/85
public void Add(E e) //在线性表的末尾添加一个元素e { LinkNode<E> s=new LinkNode<E>(e); //新建结点s LinkNode<E> p=head; while (p.next!=null) //查找尾结点p p=p.next; p.next=s; //在尾结点之后插入结点s } 14/85
(2)求线性表的长度size()//求线性表长度public int size()LinkNode<E>p=head;int cnt=0;1/找到尾结点为止while(p.next!=null)cnt++;p=p.next;return cnt;若像顺序表中一样,在单链表中设置一个长度size,插入时size++,提示删除时size--。那么求长度的时间复杂度为o(1)了。15/85
public int size() //求线性表长度 { LinkNode<E> p=head; int cnt=0; while (p.next!=null) //找到尾结点为止 { cnt++; p=p.next; } return cnt; } 若像顺序表中一样,在单链表中设置一个长度size,插入时size++, 删除时size-。那么求长度的时间复杂度为O(1)了。 提示 15/85