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

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

发布时间: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。

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

阅读全文

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

热点内容
java简单选择排序算法 浏览:262
车里插优盘怎么换文件夹 浏览:65
湿敏电阻单片机 浏览:575
自做鸡蛋解压球 浏览:57
钉钉图片上传文件夹 浏览:284
php注册页面模板 浏览:840
php中的定时器 浏览:485
怎么成为程序员的你 浏览:594
51单片机的寻址 浏览:314
压缩的服务器选择比较多怎么删除 浏览:556
程序员晚餐吃烤冷面 浏览:360
win10系统压缩和内存占用高 浏览:282
毓璜顶网上挂号官方app怎么看余额 浏览:675
java黑白棋算法 浏览:557
程序员看了上百本书 浏览:882
linux51单片机开发 浏览:642
shelllinux版本 浏览:158
尊云服务器不稳定 浏览:725
linux邮件服务器搭建sendmail 浏览:844
如何不开会员解压 浏览:74