导航:首页 > 源码编译 > 在带头结点的单链表中编写算法

在带头结点的单链表中编写算法

发布时间:2023-01-24 10:12:41

A. 有一个带头结点的单链表L,设计一个算法使其元素递增有序排列

/*插入排序法*/
voidsort(Linklist*&L)
{
LinkList*p=L->next,*q,*r;
if(p!=NULL)
{
/*把链表分成两条,一条已经排序好了(L),一条待排序(p)*/
r=p->next;
p->next=NULL;
p=r;
/*对于所有待排序的元素*/
while(p!=NULL)
{
/*把p链表的第一个元素插入到L,并且将它从p中移除*/
r=p->next;//r指向p的第二个元素
/*找到合适的插入点*/
q=L;
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
/*在q后面插入p*/
p->next=q->next;
q->next=p;
/*现在p的第一个元素已经被移到L中合适的位置了*/
p=r;
}
}
}

B. 写出在带头结点的动态单链表结构上求线性表的长度的算法: int LengthList( Node *L ) 谢谢!!

int LengthList( Node *L )

{
Node *p = L->next; //将p初始指向链表中第一个节点的地址

int length = 0;

while(p) //当p指向的地址不为空时,继续循环计算长度

{

++length;

p = p->next; //链表长度加1后,将p指向其后继节点地址

}

return length;

}

C. 已知有两个带头的结点的循环单链表LA、LB,编写一个算法,将两个循环单链表合并为一个循环单链表

已知带有头结点的两个单链表 la 和 lb 都是非递增有序序列。


编写好的算法实现将这两个链表合并为新的带有头结点的链表 lc ,使得 lc 的元素仍然是非递增有序排列的序列,如果遇到 la 与 lb 中元素相同,则只取 la 中的元素,去掉 lb 中的元素。已知 la 的元素个数 为 m , lb 的元素个数为 n。

循环单链表是单链表的另一种形式,其结构特点链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环。和单链表相同,循环链表也有带头结点结构和不带头结点结构两种,带头结点的循环单链表实现插入和删除操作较为方便。

阅读全文

与在带头结点的单链表中编写算法相关的资料

热点内容
组装电脑水冷解压 浏览:276
珠海存储服务器地址怎么找 浏览:413
md5算法字符串长度 浏览:5
可以二次虚化的云服务器 浏览:779
思科2500编程器固件 浏览:236
php开发桌面应用程序 浏览:905
支付宝app哪里可以加油 浏览:71
路由器ttl刷编程器固件 浏览:719
纵向加密密钥协商状态时间 浏览:851
mc花雨庭服务器有些什么 浏览:809
linux制作网页 浏览:19
xlsx加密忘记了怎么办 浏览:999
app湖北农信怎么解约 浏览:426
在线编程教育项目 浏览:759
电信采购5万台服务器干什么用 浏览:200
腾讯云服务器登录地址 浏览:988
程序员在地铁上写字 浏览:555
解压包未知文件格式怎么办 浏览:578
程序员破坏数据库 浏览:331
sh格式如何编译 浏览:344