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

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

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

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

阅读全文

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

热点内容
ipadminipdf阅读 浏览:504
文件夹无限制压缩会不会降低内存 浏览:410
荣耀怎样创建文件夹 浏览:629
如何用本机登陆远程服务器地址 浏览:680
黄小鸭解压文具盒 浏览:670
女程序员的转行方法 浏览:881
东风启辰车联网安装文件夹 浏览:524
华为怎么设置app时间锁 浏览:660
后宫app视频怎么下载 浏览:525
如何把图片转换从PDF格式 浏览:259
重写和重载的区别java 浏览:234
expressvpnandroid 浏览:84
储存卡被加密怎么解除 浏览:169
地球怎么压缩直径 浏览:780
金铲铲之战服务器爆满怎么进 浏览:160
同仁堂pdf 浏览:935
如何编译原理课程教材 浏览:730
单片机控制显示器 浏览:777
顶好花app下载怎么找不到 浏览:989
手机命令大全 浏览:809