一、关于数据结构方面

 数据结构是计算机存储,组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或存储效率。数据结构往往同高效的检索算法和索引技术有关。(来源于百度百科)

主要讲了数据的逻辑结构和储存结构。同时,在算法上也进行了部分的讲解,学习了算法的时间复杂度和空间复杂度。

二、线性表

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。

1.线性表的顺序存储结构——顺序表


public class SqListClass<E> {       //顺序表泛型类final int initcapacity = 10;    //顺序表的初始容量(常量)public E[] data;                //存放顺序表中元素public int size;                //存放顺序表的长度private int capacity;           //存放顺序表的容量public SqListClass() {  //构造方法,实现data和length的初始化data = (E[]) new Object[initcapacity];  //强制转换为E类型数组capacity = initcapacity;size = 0;}//线性表的基本运算算法public void CreateList(E[] a) { //由a整体建立顺序表size = 0;for (E e : a) {if (size == capacity) { //出现上溢出时updateCapacity(2 * size);   //扩大容量}data[size] = e;size++;     //添加的元素个数增加1}}public void Add(E e) {      //在线性表的末尾添加一个元素eif (size == capacity) { //顺序表空间满时倍增容量updateCapacity(2 * size);}data[size] = e;size++; //长度增1}public int size() { // 求线性表长度return size;}public void Setsize(int nlen) {    //设置线性表的长度if (nlen < 0 || nlen > size) {throw new IllegalArgumentException("设置长度:n不在有效范围内");}size = nlen;}public E GetElem(int i) {    //返回线性表中序号为i的元素if (i < 0 || i > size - 1) {throw new IllegalArgumentException("查找:位置i不在有效范围内");}return (E) data[i];}public void SetElem(int i, E e) {    //设置序号i的元素为eif (i < 0 || i > size - 1) {throw new IllegalArgumentException("设置:位置i不在有效范围内");}data[i] = e;}public int GetNo(E e) { //查找第一个为e的元素的序号int i = 0;while (i < size && !data[i].equals(e)) {i++;            //查找元素e}if (i >= size) {    //未找到时返回-1return -1;} else {return i;       //找到后返回其序号}}public void swap(int i, int j) {    //交换data[i]和data[j]E tmp = data[i];data[i] = data[j];data[j] = tmp;}public void Insert(int i, E e) {    //在线性表中序号i位置插入元素eif (i < 0 || i > size) {        //参数错误抛出异常throw new IllegalArgumentException("插入:位置i不在有效范围内");}if (size == capacity) {         //满时倍增容量updateCapacity(2 * size);}for (int j = size; j > i; j--) {    //data[i]及后面元素后移一个位置data[j] = data[j - 1];}data[i] = e;    //插入元素esize++;         //顺序表长度增1}public void Delete(int i) {         //在线性表中删除序号i位置的元素if (i < 0 || i > size - 1) {    //参数错误抛出异常throw new IllegalArgumentException("删除:位置i不在有效范围内");}for (int j = i; j < size - 1; j++) {    //将data[i]之后的元素前移一个位置data[j] = data[j + 1];}size--; //顺序表长度减1if (capacity > initcapacity && size == capacity / 4) {updateCapacity(capacity / 2);   //满足要求容量减半}}@Overridepublic String toString() {    //将线性表转换为字符串String ans = "";for (int i = 0; i < size; i++) {ans += data[i].toString() + " ";}return ans;}private void updateCapacity(int newCapacity) {  //改变顺序表的容量为newCapacityE[] newData = (E[]) new Object[newCapacity];for (int i = 0; i <size; i++) {newData[i] = data[i];}capacity = newCapacity; //设置新容量data = newData;         //仍由data标识数组}
}

2.线性表的链式存储结构——链表

单链表

 class LinkNode<E>{E data;LinkNode<E>next;public LinkNode(){next=null;}public LinkNode(E d){data=d;next=null;}
}

关于单链表的算法设计及各种结点操作

public class LinkListClass<E> {public LinkNode<E> head;public LinkListClass() {head = new LinkNode<E>();head.next = null;}public int size() {LinkNode<E> p = head;int cnt = 0;while (p.next != null) {cnt++;p = p.next;}return cnt;}public void CreatListF(E[] a) {LinkNode<E> s;for (int i = 0; i < a.length; i++) {s = new LinkNode<E>(a[i]);s.next = head.next;head.next = s;}}public void CreateListR(E[] a) {LinkNode<E> s, t = head;for (int i = 0; i < a.length; i++) {s = new LinkNode<E>(a[i]);t.next = s;t = s;}t.next = null;}private LinkNode<E> geti(int i) {LinkNode<E> p = head;int j = -1;while (j < i) {j++;p = p.next;}return p;}public void Add(E e) {LinkNode<E> s = new LinkNode<E>(e);LinkNode<E> p = head;while (p.next != null)p = p.next;p.next = s;}public E GetElem(int i) {int len = size();if (i < 0 || i > len - 1)throw new IllegalArgumentException("查找:位置i不在有效范围内");LinkNode<E> p = geti(i);return (E) p.data;}public void Setsize(int nlen) {int len = size();if (nlen < 0 || nlen > len)throw new IllegalArgumentException("设置长度:n不在有效范围内");if (nlen == len)return;LinkNode<E> p = geti(nlen - 1);p.next = null;}public void Insert(int i, E e) {if (i < 0 || i > size())throw new IllegalArgumentException("插入:位置i不在有效范围内");LinkNode<E> s = new LinkNode<E>(e);LinkNode<E> p = geti(i - 1);s.next = p.next;p.next = s;}public void Delete(int i) {if (i < 0 || i > size() - 1)throw new IllegalArgumentException("删除:位置i不在有效范围内");LinkNode<E> p = geti(i - 1);p.next = p.next.next;}public void SetElem(int i, E e) {if (i < 0 || i > size() - 1)throw new IllegalArgumentException("设置:位置i不在有效范围内");LinkNode<E> p = geti(i);p.data = e;}public int GetNo(E e) {int j = 0;LinkNode<E> p = head.next;while (p != null && !p.data.equals(e)) {j++;p = p.next;}if (p == null)return -1;else return j;}public void swap(int i, int j) {LinkNode<E> p = geti(i);LinkNode<E> q = geti(j);E tmp = p.data;p.data = q.data;q.data = tmp;}public String toString() {String ans = "";LinkNode<E> p = head.next;while (p != null) {ans += p.data + "";p = p.next;}return ans;}class DLinkNote<E>{E date;DLinkNote<E> prior;DLinkNote<E> next;public DLinkNote(){prior=null;next=null;}public DLinkNote(E d){date=d;prior=null;next=null;}}}

双链表

class DLinkNode<E>                             //双链表结点泛型类
{E data;DLinkNode<E> prior;                           //前驱结点指针DLinkNode<E> next;                            //后继结点指针public DLinkNode()                          //构造方法{ prior=null;next=null;}public DLinkNode(E d)                       //重载构造方法{data=d;prior=null;next=null;}
}public class DLinkListClass<E>                   //双链表泛型类
{DLinkNode<E> dhead;                          //存放头结点public DLinkListClass()                      //构造方法{dhead=new DLinkNode<E>();             //创建头结点dhead.prior=null;dhead.next=null;}private DLinkNode<E> geti(int i)           //返回序号为i的结点{DLinkNode<E> p=dhead;int j=-1;while (j<i){j++;p=p.next;}return p;}//线性表的基本运算算法    public void CreateListF(E[] a)              //头插法:由数组a整体建立双链表{DLinkNode<E> s;for (int i=0;i<a.length;i++)            //循环建立数据结点s{s=new DLinkNode<E>(a[i]);            //新建存放a[i]元素的结点s,将其插入到表头s.next=dhead.next;                  //修改s结点的next字段if (dhead.next!=null)                //修改头结点的非空后继结点的prior字段dhead.next.prior=s;dhead.next=s;                        //修改头结点的next字段s.prior=dhead;                       //修改s结点的prior字段}}public void CreateListR(E[] a)             //尾插法:由数组a整体建立双链表{DLinkNode<E> s,t;t=dhead;                               //t始终指向尾结点,开始时指向头结点for (int i=0;i<a.length;i++)           //循环建立数据结点s{    s=new DLinkNode<E>(a[i]);            //新建存放a[i]元素的结点st.next=s;                          //将s结点插入t结点之后s.prior=t; t=s;}t.next=null;                            //将尾结点的next字段置为null}public void Add(E e)                        //在线性表的末尾添加一个元素e{DLinkNode<E> s=new DLinkNode<E>(e);       //新建结点sDLinkNode<E> p=dhead;while (p.next!=null)                    //查找尾结点pp=p.next;p.next=s;                                //在尾结点之后插入结点ss.prior=p;}public int size()                          //求线性表长度{DLinkNode<E> p=dhead;int cnt=0;while (p.next!=null)                   //找到尾结点为止{cnt++;p=p.next;}return cnt;}public void Setsize(int nlen)              //设置线性表的长度{int len=size();if (nlen<0 || nlen>len)throw new IllegalArgumentException("设置长度:n不在有效范围内");if (nlen==len) return;DLinkNode<E> p=geti(nlen-1);           //找到序号为nlen-1的结点pp.next=null;                          //将结点p置为尾结点}public E GetElem(int i)                     //返回线性表中序号为i的元素{int len=size();if (i<0 || i>len-1)throw new IllegalArgumentException("查找:位置i不在有效范围内");DLinkNode<E> p=geti(i);                   //找到序号为i的结点preturn (E)p.data;}public void SetElem(int i,E e)                //设置序号i的元素为e{if (i<0 || i>size()-1)throw new IllegalArgumentException("设置:位置i不在有效范围内");DLinkNode<E> p=geti(i);                   //找到序号为i的结点pp.data=e;}public int GetNo(E e)                        //查找第一个为e的元素的序号{int j=0;DLinkNode<E> p=dhead.next;  while (p!=null && !p.data.equals(e)){j++;                                //查找元素ep=p.next;}if (p==null)                            //未找到时返回-1return -1;elsereturn j;                           //找到后返回其序号}public void Insert(int i, E e)               //在线性表中序号i位置插入元素e{if (i<0 || i>size())                    //参数错误抛出异常throw new IllegalArgumentException("插入:位置i不在有效范围内");DLinkNode<E> s=new DLinkNode<E>(e);        //建立新结点s    DLinkNode<E> p=dhead=geti(i-1);         //找到序号为i-1的结点p,其后插入s结点s.next=p.next;                           //修改s结点的next字段if (p.next!=null)                        //修改p结点的非空后继结点的prior字段p.next.prior=s;p.next=s;                                //修改p结点的next字段s.prior=p;                               //修改s结点的prior字段}public void Delete(int i)                   //在线性表中删除序号i位置的元素{if (i<0 || i>size()-1)                  //参数错误抛出异常throw new IllegalArgumentException("删除:位置i不在有效范围内");DLinkNode<E> p=geti(i);                  //找到序号为i的结点p,删除该结点p.prior.next=p.next;                 //修改p结点的前驱结点的next字段if (p.next!=null)                       //修改p结点非空后继结点的prior字段p.next.prior=p.prior;}public String toString()                    //将线性表转换为字符串{String ans="";DLinkNode<E> p=dhead.next;while (p!=null){ans+=p.data+" ";p=p.next;}return ans;}
}

循环链表

class LinkNode<E>                              //循环单链表结点泛型类
{E data;LinkNode<E> next;public LinkNode() {                          //构造方法next=null;}public LinkNode(E d)                      //重载构造方法{data=d;next=null;}
}public class CLinkListClass<E>                   //循环单链表泛型类
{LinkNode<E> head;                            //存放头结点public CLinkListClass()                      //构造方法{head=new LinkNode<E>();                   //创建头结点head.next=head;                         //置为空的循环单链表}private LinkNode<E> geti(int i)               //返回序号为i的结点{LinkNode<E> p=head;int j=-1;while (j<i){j++;p=p.next;}return p;}//线性表的基本运算算法  public void CreateListF(E[] a)              //头插法:由数组a整体建立循环单链表{LinkNode<E> s;for (int i=0;i<a.length;i++)           //循环建立数据结点s{s=new LinkNode<E>(a[i]);         //新建存放a[i]元素的结点ss.next=head.next;                  //将s结点插入到开始结点之前,头结点之后head.next=s;}}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]元素的结点st.next=s;                          //将s结点插入t结点之后t=s;}t.next=head;                            //将尾结点的next字段置为head}public void Add(E e)                        //在线性表的末尾添加一个元素e{LinkNode<E> s=new LinkNode<E>(e);     //新建结点sLinkNode<E> p=head;while (p.next!=head)                  //查找尾结点pp=p.next;p.next=s;                                //在尾结点之后插入结点ss.next=head;}public int size()                            //求线性表长度{LinkNode<E> p=head;int cnt=0;while (p.next!=head)                 //找到尾结点为止{cnt++;p=p.next;}return cnt;}public void Setsize(int nlen)              //设置线性表的长度{int len=size();if (nlen<0 || nlen>len)throw new IllegalArgumentException("设置长度:n不在有效范围内");if (nlen==len) return;LinkNode<E> p=geti(nlen-1);                //找到序号为nlen-1的结点pp.next=head;                          //将结点p置为尾结点}public E GetElem(int i)                     //返回线性表中序号为i的元素{int len=size();if (i<0 || i>len-1)throw new IllegalArgumentException("查找:位置i不在有效范围内");LinkNode<E> p=geti(i);                    //找到序号为i的结点preturn (E)p.data;}public void SetElem(int i,E e)                //设置序号i的元素为e{if (i<0 || i>size()-1)throw new IllegalArgumentException("设置:位置i不在有效范围内");LinkNode<E> p=geti(i);                    //找到序号为i的结点pp.data=e;}public int GetNo(E e)                        //查找第一个为e的元素的序号{int j=0;LinkNode<E> p=head.next;    while (p!=head && !p.data.equals(e)){j++;                                //查找元素ep=p.next;}if (p==head)                            //未找到时返回-1return -1;elsereturn j;                           //找到后返回其序号}public void Insert(int i, E e)               //在线性表中序号i位置插入元素e{if (i<0 || i>size())                    //参数错误抛出异常throw new IllegalArgumentException("插入:位置i不在有效范围内");LinkNode<E> s=new LinkNode<E>(e);      //建立新结点s    LinkNode<E> p=head=geti(i-1);           //找到序号为i-1的结点ps.next=p.next;                           //在p结点后面插入s结点p.next=s;}public void Delete(int i)                   //在线性表中删除序号i位置的元素{if (i<0 || i>size()-1)                  //参数错误抛出异常throw new IllegalArgumentException("删除:位置i不在有效范围内");LinkNode<E> p=geti(i-1);             //找到序号为i-1的结点pp.next=p.next.next;                      //删除p结点的后继结点}public String toString()                   //将线性表转换为字符串{String ans="";LinkNode<E> p=head.next;while (p!=head){ans+=p.data+" ";p=p.next;}return ans;}
}

循环双链表

class DLinkNode<E>                             //循环双链表结点泛型类
{E data;DLinkNode<E> prior;                           //前驱结点指针DLinkNode<E> next;                            //后继结点指针public DLinkNode()                          //构造方法{ prior=null;next=null;}public DLinkNode(E d)                       //重载构造方法{data=d;prior=null;next=null;}
}public class CDLinkListClass<E>                  //循环双链表泛型类
{DLinkNode<E> dhead;                          //存放头结点public CDLinkListClass()                 //构造方法{dhead=new DLinkNode<E>();             //创建头结点dhead.prior=dhead;                      //构成空的循环双链表dhead.next=dhead;}private DLinkNode<E> geti(int i)            //返回序号为i的结点{DLinkNode<E> p=dhead;int j=-1;while (j<i){j++;p=p.next;}return p;}//线性表的基本运算算法    public void CreateListF(E[] a)              //头插法:由数组a整体建立循环双链表{DLinkNode<E> s;for (int i=0;i<a.length;i++)          //循环建立数据结点s{s=new DLinkNode<E>(a[i]);            //新建存放a[i]元素的结点ss.next=dhead.next;                 //修改s结点的next字段dhead.next.prior=s;dhead.next=s;                        //修改头结点的next字段s.prior=dhead;                       //修改s结点的prior字段}}public void CreateListR(E[] a)             //尾插法:由数组a整体建立循环双链表{DLinkNode<E> s,t;t=dhead;                             //t始终指向尾结点,开始时指向头结点for (int i=0;i<a.length;i++)           //循环建立数据结点s{    s=new DLinkNode<E>(a[i]);            //新建存放a[i]元素的结点st.next=s;                          //将s结点插入t结点之后s.prior=t; t=s;}t.next=dhead;                           //将尾结点的next字段置为headdhead.prior=t;                          //将头结点的prior字段置为t}public void Add(E e)                      //在线性表的末尾添加一个元素e{DLinkNode<E> s=new DLinkNode<E>(e);       //新建结点sDLinkNode<E> p=dhead;while (p.next!=dhead)                   //查找尾结点pp=p.next;p.next=s;                                //在尾结点p之后插入结点ss.prior=p;s.next=dhead;dhead.prior=s;      }public int size()                          //求线性表长度{DLinkNode<E> p=dhead;int cnt=0;while (p.next!=dhead)                  //找到尾结点为止{cnt++;p=p.next;}return cnt;}public void Setsize(int nlen)              //设置线性表的长度{int len=size();if (nlen<0 || nlen>len)throw new IllegalArgumentException("设置长度:n不在有效范围内");if (nlen==len) return;DLinkNode<E> p=geti(nlen-1);           //找到序号为nlen-1的结点pp.next=dhead;                         //将结点p置为尾结点dhead.prior=p;}public E GetElem(int i)                      //返回线性表中序号为i的元素{int len=size();if (i<0 || i>len-1)throw new IllegalArgumentException("查找:位置i不在有效范围内");DLinkNode<E> p=geti(i);                   //找到序号为i的结点preturn (E)p.data;}public void SetElem(int i,E e)                //设置序号i的元素为e{if (i<0 || i>size()-1)throw new IllegalArgumentException("设置:位置i不在有效范围内");DLinkNode<E> p=geti(i);                   //找到序号为i的结点pp.data=e;}public int GetNo(E e)                        //查找第一个为e的元素的序号{int j=0;DLinkNode<E> p=dhead.next;  while (p!=dhead && !p.data.equals(e)){j++;                               //查找元素ep=p.next;}if (p==dhead)                           //未找到时返回-1return -1;elsereturn j;                           //找到后返回其序号}public void Insert(int i, E e)               //在线性表中序号i位置插入元素e{if (i<0 || i>size())                    //参数错误抛出异常throw new IllegalArgumentException("插入:位置i不在有效范围内");DLinkNode<E> s=new DLinkNode<E>(e);        //建立新结点s    DLinkNode<E> p=dhead=geti(i-1);         //找到序号为i-1的结点p,其后插入s结点s.next=p.next;                           //修改s结点的next字段p.next.prior=s;p.next=s;                                //修改p结点的next字段s.prior=p;                               //修改s结点的prior字段}public void Delete(int i)                   //在线性表中删除序号i位置的元素{if (i<0 || i>size()-1)                  //参数错误抛出异常throw new IllegalArgumentException("删除:位置i不在有效范围内");DLinkNode<E> p=geti(i);                  //找到序号为i的结点p,删除该结点p.prior.next=p.next;                 //修改p结点的前驱结点的next字段p.next.prior=p.prior;}public String toString()                  //将线性表转换为字符串{String ans="";DLinkNode<E> p=dhead.next;while (p!=dhead){ans+=p.data+" ";p=p.next;}return ans;}
}

链表容器

public class trans
{public static void main(String[] args){ArrayList<String> myarrlist = new ArrayList<String>();  myarrlist.add("A");  myarrlist.add("B");  myarrlist.add("C");  myarrlist.add("D"); System.out.println("ArrayList:  "+myarrlist);  System.out.println("ArrayList->LinkedList");LinkedList<String> mylinklist=new LinkedList<String>(myarrlist);  System.out.println("LinkedList: "+mylinklist); System.out.println("清空LinkedList并添加1,2,3");  mylinklist.clear();mylinklist.add("1");mylinklist.add("2");mylinklist.add("3");System.out.println("LinkedList: "+mylinklist); myarrlist=new ArrayList<String>(mylinklist);  System.out.println("LinkedList->ArrayList");System.out.println("ArrayList:  "+myarrlist);        }
}

代码运行结果

求解多项式相加问题

class PolyElem                               //多项式顺序表元素类型
{   double coef;                            //系数int exp;                                //指数PolyElem(double c,int e)                //构造方法{coef=c;exp=e;}public int getexp()                      //用于按exp递减排序{return exp;}
}
class PolyClass                             //多项式顺序表类
{   ArrayList<PolyElem> poly;             //存放多项式顺序表public PolyClass()                        //构造方法{poly=new ArrayList<PolyElem>();       //分配顺序表的data空间}public void Add(PolyElem p)              //末尾添加一个多项式项{poly.add(p);}public void CreatePoly(double[] a,int[] b,int n) //建立多项式顺序表{for (int i=0;i<n;i++)poly.add(new PolyElem(a[i],b[i]));}public void Sort()      //对多项式顺序表按exp域递减排序{poly.sort(Comparator.comparing(PolyElem::getexp).reversed());        //comparingInt}public void DispPoly()                       //输出多项式顺序表{ boolean first=true;                        //first为true表示是第一项int i=0;while (i<poly.size()){PolyElem p=(PolyElem)poly.get(i); if (first) first=false;else if (p.coef>0) System.out.print("+");if (p.exp==0)               //指数为0时不输出'x'System.out.print(p.coef);else if (p.exp==1)            //指数为1时不输出指数System.out.print(p.coef+"x");elseSystem.out.print(p.coef+"x^"+p.exp);i++;}System.out.println();}
}
public class PolyTest1 {public static PolyClass Add(PolyClass L1,PolyClass L2)                  //两个多项式相加运算{    int i=0,j=0;double c;PolyClass L3=new PolyClass();while (i<L1.poly.size() && j<L2.poly.size()){    if (L1.poly.get(i).exp>L2.poly.get(j).exp)                           //L1的元素的指数较大{L3.Add(new PolyElem(L1.poly.get(i).coef,L1.poly.get(i).exp));  //新建L3的元素i++;}else if (L1.poly.get(i).exp<L2.poly.get(j).exp)                      //L2的元素的指数较大{L3.Add(new PolyElem(L2.poly.get(j).coef,L2.poly.get(j).exp));  //新建L3的元素j++;}else                                                                //两元素的指数相等{ c=L1.poly.get(i).coef+L2.poly.get(j).coef;                        //求两指数相等元素的系数和if (c!=0)                                                        //系数和c不为0时复制L3.Add(new PolyElem(c,L1.poly.get(i).exp));                 //新建L3的元素i++; j++;}}while (i<L1.poly.size())                                             //复制poly1余下的元素{L3.Add(new PolyElem(L1.poly.get(i).coef,L1.poly.get(i).exp));        //新建L3的元素i++;}while (j<L2.poly.size())                                             //复制poly2余下的元素{L3.Add(new PolyElem(L2.poly.get(j).coef,L2.poly.get(j).exp));        //新建L3的元素j++;}return L3;}public static void main(String[] args) throws FileNotFoundException{System.setIn(new FileInputStream("E:\\ideaCode\\shujujiegou\\src\\ch2\\Application\\abc.in")); //将标准输入流重定向至abc.inScanner fin = new Scanner(System.in);//System.setOut(new PrintStream("E:\\ideaCode\\shujujiegou\\src\\ch2\\Application\\abc.out"));        //将标准输出流重定向至abc.outPolyClass L1=new PolyClass();PolyClass L2=new PolyClass();PolyClass L3;                                    //建立3个多项式顺序表对象double[] a=new double[100];int[] b=new int[100];int n;n = fin.nextInt();                               //输入nfor (int i=0;i<n;i++)                            //输入aa[i]=fin.nextDouble();for (int i=0;i<n;i++)                             //输入bb[i]=fin.nextInt();L1.CreatePoly(a,b,n);                          //创建第1个多项式顺序表System.out.print("第1个多项式:  "); L1.DispPoly();L1.Sort();                                      //排序System.out.print("排序后结果:   "); L1.DispPoly();n = fin.nextInt();                              //输入nfor (int i=0;i<n;i++)                            //输入aa[i]=fin.nextDouble();for (int i=0;i<n;i++)                         //输入bb[i]=fin.nextInt();L2.CreatePoly(a,b,n);                          //创建第2个多项式顺序表System.out.print("第2个多项式:  "); L2.DispPoly();L2.Sort();                                      //排序System.out.print("排序后结果:   "); L2.DispPoly();L3=Add(L1,L2);                                  //两多项式相加System.out.print("相加后多项式: "); L3.DispPoly();}
}

代码运行结果

数据结构教程(Java语言描述)前两章总结相关推荐

  1. 数据结构与算法JAVA语言描述第六章部分课后习题参考答案

    6.2: (a): (b): 6.3: (a): (b): 6.19: 6.26: 6.32:

  2. 数据结构java语言描述朱战立_数据结构——树(Java语言描述)

    树根:rootNode. 树只有一个树根. 节点:Node. 树上的所有节点. 子节点数组:Node[]. 数组代表每个节点的所有子节点 父节点:parentNode. 每个节点只有一个父节点. 2. ...

  3. 数据结构(java)课后答案_清华大学出版社-图书详情-《数据结构实用教程(Java语言描述)习题参考解答》...

    前 言 本书是与作者编著的<数据结构实用教程(Java语言描述)>一书相配套的辅助教材.全书共分为11章,包括绪论.集合.线性表.稀疏矩阵和广义表.栈和队列.树和二叉树.常用二叉树.图.图 ...

  4. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  5. 《数据结构与抽象:Java语言描述(原书第4版)》一2.2.1 可变大小数组

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.2.1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timo ...

  6. 《数据结构与抽象:Java语言描述(原书第4版)》一练习

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. H ...

  7. 《数据结构与抽象:Java语言描述(原书第4版)》一1.2 说明一个包

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第1章 ,第1.2节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timoth ...

  8. 《数据结构与抽象:Java语言描述(原书第4版)》一2.1.7 删除项的方法

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.1.7节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timo ...

  9. 《数据结构与抽象:Java语言描述(原书第4版)》一JI2.3 抛出异常

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. H ...

  10. 《数据结构与抽象:Java语言描述(原书第4版)》一2.1.4 让实现安全

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timoth ...

最新文章

  1. Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等
  2. 0048-三角形的判断
  3. 规则引擎Easy-rules
  4. Fragment 横竖屏切换问题
  5. bzoj4709 [Jsoi2011]柠檬
  6. CUDA(*.cu)程序与C(*.c)源程序混合编译
  7. avue-crud 会多出来空白的一列
  8. 3PAR副总裁谈09年存储虚拟化
  9. 用iArduino app+以太网插板实现“iPhone,iPadiPod无线控制Arduino”!
  10. 计算机名的更改是灰色解决方案
  11. Avalon and Indigo CTP- March 2005提供公开下载!
  12. jquery on()绑定的点击事件在js动态新添加的元素上无效
  13. oauth2 token为空拦截_OAuth2 Token 一定要放在请求头中吗?
  14. signal(SIGCLD,SIG_IGN)
  15. myeclipse以及tomcat乱码解决
  16. 2020-05-28
  17. 傻妞sillyGirl对接VLW微信机器人
  18. 算法学习【1】三个空汽水瓶可以换一瓶汽水
  19. C语言转义字符 转义序列(内含\ddd \xhh 含义)
  20. 举头望明月打计算机术语,呐,你们要的灯谜来了!

热门文章

  1. 市场营销学数据分析【香奈儿包包在京东上的比价分析】
  2. 重温CLR(十七)程序集加载和反射
  3. linux expect 读取文件循环,linux expect的使用详解,实例
  4. python做兼职开发_手工客寻找 IOS外包/兼职开发,前端,Python开发小伙伴
  5. ANSYS APDL 应用技巧
  6. PCB信仰直尺-开源
  7. 网页中链接实现打印功能
  8. pandas 的 object 类型
  9. HttpRequest
  10. 为什么3D游戏建模师就业要求越来越高的原因