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

油画风网站云南工程建设总承包公司官网

油画风网站,云南工程建设总承包公司官网,wordpress add_action,网站是不是要用代码做链表的物理存储结构是用一组地址任意的存储单元存储数据的。不像顺序表占据连续的一段内存空间#xff0c;而是将存储单元分散在内存的任意地址上。 链表结构中#xff0c;每个数据元素记录都存放到链表的一个节点#xff08;node#xff09;中#xff0c;而每个节点之间由…链表的物理存储结构是用一组地址任意的存储单元存储数据的。不像顺序表占据连续的一段内存空间而是将存储单元分散在内存的任意地址上。   链表结构中每个数据元素记录都存放到链表的一个节点node中而每个节点之间由指针将其连接在一起形成了”链“的结构、 链表每个节点中都必须有一个专门用来存放指针地址的域用这个指针域来存放后继结点的地址这样就达成了连接后继结点的目的。 一条链表通常有1个”表头“是一个指针变量用来存放第一个节点地址。此外一条链表的最后一个节点的指针域要置空NULL表示该节点为链表的尾节点因为它之没有后继结点了。   链表特征 1每个节点包括两部分数据域和指针域。其中数据域用来存放数据元素本身的信息指针域用来存放后继结点的地址。 2链表逻辑上是连续的而物理上不一定连续存储节点、 3只要获得链表的头节点就可以通过指针遍历整条链表。   实例编写一个程序要求从终端输入一组整数大于10个数以0作为结束标志将这一组整数存放在一个链表中结束标志0不包括在内打印出该链表中的值。然后删除该链表中的第五个元素打印出删除后的结果。最后在内存中释放掉该链表。   #includestdio.h #includestdlib.h typedef int ElemType;typedef struct node{ElemType data;struct node *next; }LNode,*LinkList;LinkList GreatLinkList(int n) { //创建一个长度为n的链表 LinkList p,r,listNULL;ElemType e;int i;for(i1;in;i) {scanf(%d,e); //输入结点的内容 p(LinkList)malloc(sizeof(LNode));//为新建的结点开辟内存空间 p-datae; //元素赋值 p-nextNULL;if(!list)listp; //赋值链表头指针 elser-nextp; //将结点连入链表 rp;}return list; //返回链表头指针 }void insertList(LinkList *list,LinkList q,ElemType e) {//向链表中插入结点 e LinkList p;p(LinkList)malloc(sizeof(LNode));//为新建的结点开辟新的内存空间 生成一个新结点由p指向它 p-datae; //向该结点的数据域赋值e if(!*list) {*listp; //list内容为NULL时表示该链表为空赋值链表头指针 p-nextNULL;} //当链表为空时q没有意义只能在头结点后面插入第一个元素 else {p-nextq-next;//当链表不为空时认为q指向的结点一定存在将q指向的结点的next域的值赋给p指向结点的next域q-nextp; } }void delLink(LinkList *list,LinkList q) { //删除链表的某结点 LinkList r;if(q*list) { //如果删除第一个结点 *listq-next;free(q);}else { //删除其他结点 for(r*list;r-next!q;rr-next)if(r-next!NULL) {r-nextq-next;free(q);}} }void destroyLinkList(LinkList *list) { //销毁一个链表 LinkList p,q;p*list;while(p) { //循环释放掉每一个链表结点 qp-next;free(p);pq;}*listNULL;//将*list的内容置为NULL这样主函数中的链表list就为空防止了list变为野指针而且链表在内存中也完全被释放掉了。 }int main() {int e,i;LinkList l,q;qlGreatLinkList(l);//创建一个链表结点q和l都指向该结点 scanf(%d,e);while(e) { //循环输入数据同时插入新生成的结点 insertList(l,q,e);qq-next;scanf(%d,e);}ql;printf(the content of the linklist\n);while(q) { //输出链表中的内容 printf(%d,q-data);qq-next;}ql;printf(\nDelete the fifth element);for(i0;i4;i) { //将指针q指向链表的第五个元素 if(qNULL) { //确保此时链表的长度大于等于5否则将是非法操作 printf(the length of the linklist is smaller than 5!);}qq-next;}delLink(l,q); //找到链表中第五个元素用q指向它再删除q所指的结点 ql;while(q) { //打印出删除后的结果 printf(%d,q-data);qq-next;}destroyLinkList(l); //销毁该链表 return 0; }创建链表注意 1用malloc()函数在内存的动态存储区堆内存中开辟一块大小为sizeof(LNode)的空间并将其地址赋给LinkList类型变量pLinkList为指向LNode变量的类型LNode为前面定义的链表结点类型。然后将数据e存入该结点的数据域data指针域存放NULL。 2若指针变量list为空说明本次生存的结点是第一个结点…… 3若指针变量list不为空说明本次生存的结点不是第一个结点将p赋给r-next。此处的r是一个LinkList类型变量永远指向原先链表的最后一个结点也就是要插入结点的前一个结点。 4再将p赋值给r目的是使r再次指向最后的结点以便生成链表的下一个结点即保证r永远指向原先链表的最后一个结点。 5重复1~4n次生成n个结点的链表 6最后生成的链表的头指针list返回主调函数通过list就可以访问到该链表的每一个结点。   删除链表注意 从非空链表删除q所指的结点考虑3种情况 1q所指向的是链表的第一个结点 2q所指向的结点的前驱结点的指针已知 3q所指向的结点的前驱结点的指针未知   销毁链表注意 链表使用完建议销毁因为链表本身会占用内存空间。若一个系统中使用很多链表而使用完又不及时销毁那么这些垃圾空间积累过多最终导致内存的泄露甚至程序的崩溃。   ———————————————————————— ———————————————————————— 程序运行时候删除第5个元素没有显示出预期结果。运行环境在DEV。转载于:https://www.cnblogs.com/dd2hm/p/6838694.html
http://www.yutouwan.com/news/66730/

相关文章:

  • 试用网站要怎么做个人博客网页模板
  • 深圳做响应式网站制作网站制作案例图片
  • TP5企业网站开发教程百度云wordpress 支付宝
  • wordpress底部导航插件网站改版影响seo吗
  • 自己做网站的优势虫虫 wordpress 群发
  • 大气金融投资企业网站模板最容易做的网站类型
  • 网站刷单账务处理怎么做杭州专业网站排名优化
  • 多城市网站建设网站制作公司排名
  • 网站建设宣传ppt模板公司网站的好处
  • 做ppt网站有哪些内容吗wordpress怎么把图片存七牛
  • 环境文化建设方案网站地和网站建设
  • 做破解网站合法互联网络
  • 建设部网站查询造价师证件网页的源代码的开始和结束标签必须是
  • 1.网站建设基本流程是什么荣耀手机商城官方网站售后
  • 如何做网络投票网站苏州网络公司策划
  • 品牌做网站怎样做艾条艾柱网站
  • 网站后台维护主要做什么怎么做游戏网站的宣传图片
  • ps网站专题怎么做网页制作详细设计
  • 杭州有哪些做网站的公司网页设计基础介绍
  • 温州网站优化页面最超值的锦州网站建设
  • 免费网站引导页最优秀的无锡网站建设
  • 杏坛餐饮网站建站app研发过程
  • 模拟登录wordpress c长沙网站推广seo
  • 照着别人网站做青海省公路建设总公司网站
  • 徐州集团网站建设报价wordpress主题评论
  • 架设网站 自己购买服务器洛阳网络科技有限公司排名
  • 网站调用wordpress安卓开发软件安装教程
  • 笋岗网站建设建设电影网站如何赚钱
  • 免费网络推广方式淘宝做的网站优化
  • 阿里巴巴公司网站建设常州外贸建站