单链表的应用实例
区块链技术在供应链管理中的应用实例 #生活知识# #科技生活# #科技新闻#
1、有一个带头结点的单链表L=(a1,b1,a2,b2,a3,b3…an,bn),设计一个算法将其拆分为两个带头结点的单链表L1和L2,其中L1=(a1,a2,a3,a4…an),L2=(bn,…b3,b2,b1),要求L1使用L的头节点。
解:利用原单链表L中的所有结点通过改变指针域重组成两个单链表L1和L2。由于L1中结点的相对顺序与L中的相同,所以采用尾插法建立单链表L1;由于L2中结点的相对顺序与L中的相反,所以采用头插法建立单链表L2。代码如下:
void split(LinkNode * &L,LinkNode * &L1,LinkNode * &L2) {LinkNode *p=L->next,*q,*rl; //p指向第一个数据结点L1=L;rl=L1; //rl始终指向L1的尾结点L2=(LinkNode *)malloc(sizeof(LinkNode)); //创建L2的头结点L2->next=NULL;while(p!=NULL){rl->next=p; //采用尾插法将p插入到L1中rl=p;p=p->next;q=p->next;p->next=L2->next;//采用头插法将结点p插入L2中L2->next=p;p=q; //重定位}rl->next=NULL; }
123456789101112131415161718192、设计一个算法,删除一个单链表L中元素值最大的结点(假设这样的结点唯一)。
解:在单链表中删除一个结点先要找到它的前驱结点,用指针p扫描整个单链表,pre指向结点p的前驱结点,再扫描时用maxp指向data域值最大的结点,maxpre指向maxp所指结点的前驱结点。当单链表扫描完毕后,通过maxpre所指的结点删除其后的结点,即删除了结点值最大的结点。算法如下:
void delmaxnode(LinkNode * &L) {LinkNode *p=L->next,*pre=L,*maxp=p,*maxpre=pre;while(p!=NULL){if(maxp->data<p->data){maxp=p;maxpre=pre;}pre=p;p=p->next;}maxpre->next=maxp->next;free(maxp); 123456789101112131415
网址:单链表的应用实例 https://www.yuejiaxmz.com/news/view/425080
相关内容
711便利店供应链管理案例分析区块链技术在绿色供应链中的应用
家居日用品B2B平台实践案例:数字化转型下的供应链优化与业务增长
请列举生活中物联网应用实例
可持续供应链 | 一文了解可持续和绿色供应链实践指南
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。
应用全攻略 10个常用数字证书应用实例
流批一体?实时数据处理场景化应用实例~
可持续供应链
正泰新能入选工信部绿色供应链管理典型案例