事业单位招聘考试论坛

 找回密码
 立即注册
查看: 250|回复: 0

计算机基础知识:建立单链表——有序单链表

[复制链接]

3万

主题

3万

帖子

11万

积分

论坛元老

Rank: 8Rank: 8

积分
114820
发表于 2016-6-19 14:46:39 | 显示全部楼层 |阅读模式
推荐阅读: 2014公共基础知识题库| 行政能力测试复习资料| 2014年申论热点
【导语】在事业单位考试中,计算机专业知识的复习向来是考生复习备考阶段的一大重点,其中新都事业单位考试网为计算机基础知识的复习为考生提供知识点梳理,帮助考生备考!
有序单链表:是指原表中结点的数据值,按从小到大(或从大到小)的顺序排列。为了建立一个有序单链表,每次生成的新结点,总是插入到当前链表的合适位置。在带表头结点的单链表中,所有位置上的插入操作都是一致的,不需要做特殊处理。
若用换行符‘\n’作为输入结束标志,pre为指向当前结点前件的指针、cur为指向当前结点的指针,则建立带表头结点的有序单链表的算法如下:
LinkList CreateList_or( )
{
LinkList H,pre,cur; /*pre将指向当前结点的前件,cur将指向当前结点*/
char ch;
H =(LinkList)malloc(sizeof(
ListNode)); /*生成表头结点*/
if(!H)
{ printf("\n 存储分配失败");
exit(1);
}
H->next=NULL;/*表初值为空*/
while((ch=getchar( ))!=’\n’)
{
pre=H;/*pre指向当前结点的前件*/
cur=H->next;/*cur指当前结点*/
while(cur&&cur->data
/*找出新结点在表中的合适位置*/
{
pre=cur;
cur=cur->next;
}
cur=(LinkList)malloc(sizeof(
ListNode)); /*生成新结点*/
if(!cur)
{
printf("\n 存储分配失败");
exit(1);
}
cur->data=ch;
cur->next=pre->next; /*新结点插在pre所指结点的后面*/
pre->next=cur;/*尾指针指向新结点*/
}
return(H); /*返回头指针*/
}
容易看出,以上3个算法的时间复杂度均为O(n)。
以上是新都事业单位考试网为考生梳理计算机基础知识点,供大家学习识记!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|新都网

GMT+8, 2024-11-20 23:30 , Processed in 0.066308 second(s), 7 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表