当前位置: 首页 > news >正文

ps怎么做网站的首页成都网站建设制作

ps怎么做网站的首页,成都网站建设制作,北京朝阳区地图高清版大图,企业网站建设的基本步骤应用程序后在那个的数据大致有四种基本的逻辑结构#xff1a; 集合#xff1a;数据元素之间只有同属于一个集合的关系 线性结构#xff1a;数据元素之间存在一个对一个的关系 树形结构#xff1a;数据元素之间存在一个对多个关系 图形结构或网状结构#xff…应用程序后在那个的数据大致有四种基本的逻辑结构 集合数据元素之间只有同属于一个集合的关系 线性结构数据元素之间存在一个对一个的关系 树形结构数据元素之间存在一个对多个关系 图形结构或网状结构数据元素之间存在多个对多个的关系 对于数据不同的逻辑结构计算机在物理磁盘上通常有两种屋里存储结构 顺序存储结构 链式存储结构 本篇博文主要讲的是线性结构而线性结构主要是线性表非线性结构主要是树和图。 线性表的基本特征 总存在唯一的第一个数据元素 总存在唯一的最后一个数据元素 除第一个数据元素外集合中的每一个数据元素都只有一个前驱的数据元素 除最后一个数据元素外集合中的每一个数据元素都只有一个后继的数据元素 1.线性表的顺序存储结构是指用一组地址连续的存储单元一次存放线性表的元素。为了使用顺序结构实现线性表程序通常会采用数组来保存线性中的元素是一种随机存储的数据结构适合随机访问。java中ArrayList类是线性表的数组实现。   1 import java.util.Arrays;2 public class SequenceListT3 {4 private int DEFAULT_SIZE 16;5 //保存数组的长度。6 private int capacity;7 //定义一个数组用于保存顺序线性表的元素8 private Object[] elementData;9 //保存顺序表中元素的当前个数10 private int size 0;11 //以默认数组长度创建空顺序线性表12 public SequenceList()13 {14 capacity DEFAULT_SIZE;15 elementData new Object[capacity];16 }17 //以一个初始化元素来创建顺序线性表18 public SequenceList(T element)19 {20 this();21 elementData[0] element;22 size;23 }24 /**25 * 以指定长度的数组来创建顺序线性表26 * param element 指定顺序线性表中第一个元素27 * param initSize 指定顺序线性表底层数组的长度28 */29 public SequenceList(T element , int initSize)30 {31 capacity 1;32 //把capacity设为大于initSize的最小的2的n次方33 while (capacity initSize)34 {35 capacity 1;36 }37 elementData new Object[capacity];38 elementData[0] element;39 size;40 }41 //获取顺序线性表的大小42 public int length()43 {44 return size;45 }46 //获取顺序线性表中索引为i处的元素47 public T get(int i)48 {49 if (i 0 || i size - 1)50 {51 throw new IndexOutOfBoundsException(线性表索引越界);52 }53 return (T)elementData[i];54 }55 //查找顺序线性表中指定元素的索引56 public int locate(T element)57 {58 for (int i 0 ; i size ; i)59 {60 if (elementData[i].equals(element))61 {62 return i;63 }64 }65 return -1;66 }67 //向顺序线性表的指定位置插入一个元素。68 public void insert(T element , int index)69 {70 if (index 0 || index size)71 {72 throw new IndexOutOfBoundsException(线性表索引越界);73 }74 ensureCapacity(size 1);75 //将index处以后所有元素向后移动一格。76 System.arraycopy(elementData , index , elementData77 , index 1 , size - index);78 elementData[index] element;79 size;80 }81 //在线性顺序表的开始处添加一个元素。82 public void add(T element)83 {84 insert(element , size);85 }86 //很麻烦而且性能很差87 private void ensureCapacity(int minCapacity)88 {89 //如果数组的原有长度小于目前所需的长度90 if (minCapacity capacity)91 {92 //不断地将capacity * 2直到capacity大于minCapacity为止93 while (capacity minCapacity)94 {95 capacity 1;96 }97 elementData Arrays.copyOf(elementData , capacity);98 }99 } 100 //删除顺序线性表中指定索引处的元素 101 public T delete(int index) 102 { 103 if (index 0 || index size - 1) 104 { 105 throw new IndexOutOfBoundsException(线性表索引越界); 106 } 107 T oldValue (T)elementData[index]; 108 int numMoved size - index - 1; 109 if (numMoved 0) 110 { 111 System.arraycopy(elementData , index1 112 , elementData, index , numMoved); 113 } 114 //清空最后一个元素 115 elementData[--size] null; 116 return oldValue; 117 } 118 //删除顺序线性表中最后一个元素 119 public T remove() 120 { 121 return delete(size - 1); 122 } 123 //判断顺序线性表是否为空表 124 public boolean empty() 125 { 126 return size 0; 127 } 128 //清空线性表 129 public void clear() 130 { 131 //将底层数组所有元素赋为null 132 Arrays.fill(elementData , null); 133 size 0; 134 } 135 public String toString() 136 { 137 if (size 0) 138 { 139 return []; 140 } 141 else 142 { 143 StringBuilder sb new StringBuilder([); 144 for (int i 0 ; i size ; i ) 145 { 146 sb.append(elementData[i].toString() , ); 147 } 148 int len sb.length(); 149 return sb.delete(len - 2 , len).append(]).toString(); 150 } 151 } 152 }   2.线性表链式存储结构:将采用一组地址的任意的存储单元存放线性表中的数据元素。 链表又可分为 单链表每个节点只保留一个引用该引用指向当前节点的下一个节点没有引用指向头结点尾节点的next引用为null。 循环链表一种首尾相连的链表。 双向链表每个节点有两个引用一个指向当前节点的上一个节点另外一个指向当前节点的下一个节点。 下面给出线性表双向链表的实现java中LinkedList是线性表的链式实现是一个双向链表。 1 public class DuLinkListT2 {3 //定义一个内部类NodeNode实例代表链表的节点。4 private class Node5 {6 //保存节点的数据7 private T data;8 //指向上个节点的引用9 private Node prev;10 //指向下个节点的引用11 private Node next;12 //无参数的构造器13 public Node()14 {15 }16 //初始化全部属性的构造器17 public Node(T data , Node prev , Node next)18 {19 this.data data;20 this.prev prev;21 this.next next;22 }23 }24 //保存该链表的头节点25 private Node header;26 //保存该链表的尾节点27 private Node tail;28 //保存该链表中已包含的节点数29 private int size;30 //创建空链表31 public DuLinkList()32 {33 //空链表header和tail都是null34 header null;35 tail null;36 }37 //以指定数据元素来创建链表该链表只有一个元素38 public DuLinkList(T element)39 {40 header new Node(element , null , null);41 //只有一个节点header、tail都指向该节点42 tail header;43 size;44 }45 //返回链表的长度 46 public int length()47 {48 return size;49 }50 51 //获取链式线性表中索引为index处的元素52 public T get(int index)53 {54 return getNodeByIndex(index).data;55 }56 //根据索引index获取指定位置的节点57 private Node getNodeByIndex(int index)58 {59 if (index 0 || index size - 1)60 {61 throw new IndexOutOfBoundsException(线性表索引越界);62 }63 if (index size / 2)64 {65 //从header节点开始66 Node current header;67 for (int i 0 ; i size / 2 current ! null68 ; i , current current.next)69 {70 if (i index)71 {72 return current;73 }74 }75 }76 else77 {78 //从tail节点开始搜索79 Node current tail;80 for (int i size - 1 ; i size / 2 current ! null81 ; i , current current.prev)82 {83 if (i index)84 {85 return current;86 }87 }88 }89 return null;90 }91 //查找链式线性表中指定元素的索引92 public int locate(T element)93 {94 //从头节点开始搜索95 Node current header;96 for (int i 0 ; i size current ! null97 ; i , current current.next)98 {99 if (current.data.equals(element)) 100 { 101 return i; 102 } 103 } 104 return -1; 105 } 106 //向线性链式表的指定位置插入一个元素。 107 public void insert(T element , int index) 108 { 109 if (index 0 || index size) 110 { 111 throw new IndexOutOfBoundsException(线性表索引越界); 112 } 113 //如果还是空链表 114 if (header null) 115 { 116 add(element); 117 } 118 else 119 { 120 //当index为0时也就是在链表头处插入 121 if (index 0) 122 { 123 addAtHeader(element); 124 } 125 else 126 { 127 //获取插入点的前一个节点 128 Node prev getNodeByIndex(index - 1); 129 //获取插入点的节点 130 Node next prev.next; 131 //让新节点的next引用指向next节点prev引用指向prev节点 132 Node newNode new Node(element , prev , next); 133 //让prev的next指向新节点。 134 prev.next newNode; 135 //让prev的下一个节点的prev指向新节点 136 next.prev newNode; 137 size; 138 } 139 } 140 } 141 //采用尾插法为链表添加新节点。 142 public void add(T element) 143 { 144 //如果该链表还是空链表 145 if (header null) 146 { 147 header new Node(element , null , null); 148 //只有一个节点header、tail都指向该节点 149 tail header; 150 } 151 else 152 { 153 //创建新节点,新节点的pre指向原tail节点 154 Node newNode new Node(element , tail , null); 155 //让尾节点的next指向新增的节点 156 tail.next newNode; 157 //以新节点作为新的尾节点 158 tail newNode; 159 } 160 size; 161 } 162 //采用头插法为链表添加新节点。 163 public void addAtHeader(T element) 164 { 165 //创建新节点让新节点的next指向原来的header 166 //并以新节点作为新的header 167 header new Node(element , null , header); 168 //如果插入之前是空链表 169 if (tail null) 170 { 171 tail header; 172 } 173 size; 174 } 175 //删除链式线性表中指定索引处的元素 176 public T delete(int index) 177 { 178 if (index 0 || index size - 1) 179 { 180 throw new IndexOutOfBoundsException(线性表索引越界); 181 } 182 Node del null; 183 //如果被删除的是header节点 184 if (index 0) 185 { 186 del header; 187 header header.next; 188 //释放新的header节点的prev引用 189 header.prev null; 190 } 191 else 192 { 193 //获取删除点的前一个节点 194 Node prev getNodeByIndex(index - 1); 195 //获取将要被删除的节点 196 del prev.next; 197 //让被删除节点的next指向被删除节点的下一个节点。 198 prev.next del.next; 199 //让被删除节点的下一个节点的prev指向prev节点。 200 if (del.next ! null) 201 { 202 del.next.prev prev; 203 } 204 //将被删除节点的prev、next引用赋为null. 205 del.prev null; 206 del.next null; 207 } 208 size--; 209 return del.data; 210 } 211 //删除链式线性表中最后一个元素 212 public T remove() 213 { 214 return delete(size - 1); 215 } 216 //判断链式线性表是否为空链表 217 public boolean empty() 218 { 219 return size 0; 220 } 221 //清空线性表 222 public void clear() 223 { 224 //将底层数组所有元素赋为null 225 header null; 226 tail null; 227 size 0; 228 } 229 public String toString() 230 { 231 //链表为空链表时 232 if (empty()) 233 { 234 return []; 235 } 236 else 237 { 238 StringBuilder sb new StringBuilder([); 239 for (Node current header ; current ! null 240 ; current current.next ) 241 { 242 sb.append(current.data.toString() , ); 243 } 244 int len sb.length(); 245 return sb.delete(len - 2 , len).append(]).toString(); 246 } 247 } 248 public String reverseToString() 249 { 250 //链表为空链表时 251 if (empty()) 252 { 253 return []; 254 } 255 else 256 { 257 StringBuilder sb new StringBuilder([); 258 for (Node current tail ; current ! null 259 ; current current.prev ) 260 { 261 sb.append(current.data.toString() , ); 262 } 263 int len sb.length(); 264 return sb.delete(len - 2 , len).append(]).toString(); 265 } 266 } 267 }   线性表的两种实现比较 空间性能 顺序表顺序表的存储空间是静态分布的需要一个长度固定的数组因此总有部分数组元素被浪费。   链表链表的存储空间是动态分布的因此不会空间浪费。但是由于链表需要而外的空间来为每个节点保存指针因此要牺牲一部分空间。 时间性能 顺序表顺序表中元素的逻辑顺序与物理存储顺序是保持一致的而且支持随机存取。因此顺序表在查找、读取时性能很好。   链表链表采用链式结构来保存表内元素因此在插入、删除元素时性能要好 转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/7485590.html
http://www.zqtcl.cn/news/262149/

相关文章:

  • 商业网站的网址买网站服务器吗
  • 专业的单位网站开发网站开发和网页开发有什么区别
  • 电子商务网站建设 概念免费网页设计制作网站
  • 柳州做网站设计的公司游戏界面设计图片
  • 网站建设属于无形资产吗网站开发工程师 下载
  • 湖北城乡建设部网站首页推广电子商务网站的案例
  • 做地方网站如何盈利电脑上怎样进入中国建设银行网站
  • 网站建设初期问题常见wordpress 3.8页面伪静态化 html
  • wordpress字不能显示嘉兴优化网站公司
  • 免费行情网站大全下载wordpress访问要10多秒
  • 内蒙古生产建设兵团四师三十四团知青网站绵阳哪里可以做网站的地方
  • 网站建设找推推蛙wordpress 评论 字段
  • 河北保定网站建设石家庄网站建设找汉狮
  • 网站建设风险分析网站开发需多少钱
  • 苏州企业网站制作程序开发的步骤
  • 网站开发与维护竞赛深圳建设局官网站
  • 开发网站的费用属于什么费用高等院校网站建设方案
  • 建设化工网站的功能百度装修网站
  • 重庆大渡口营销型网站建设价格网站404 原因
  • 网网站建设公司咨询php asp jsp 网站
  • 遂宁北京网站建设微盟微商城官网
  • 惠州网站建设创业三明百度seo
  • 网站制作模板公司网站维护流程
  • 超炫网站模板友情链接交换教程
  • 物流公司做网站有用吗备案网站的黑名单
  • 多语言网站制作长沙市做网站的
  • 做视频点播网站要多少带宽怎么用电脑做网站服务器吗
  • 新办公司网上核名在哪个网站做网站内容作弊的形式
  • 网站风格化设计方案常见的erp软件有哪些
  • 河北石家庄特产做网站优化的