typedef struct LNode *List;
struct LNode{
ElementType Data;
List Next;
};
struct LNode L;
List PtrL;
int Length(List PtrL)//求表长 
{
List p=PtrL;//p指向表的第一个结点 
int j=0;
while(p){
p=p->Next;
j++;//当前p指向的是第一个结点 

return j;
} //T(N)=O(N) 
List FindKth(int K,List PtrL)//1.按序号查找 
{
List p=PtrL;
int i=1;
while(p!=NULL&&i<K){
p=p->Next;
i++;
}
if(i==K) return p;
//找到第K个,返回指针 
else return NULL;
//否则返回空 
}
List Find(ElementType X,List PtrL)//2.按值查找 
{
List p=PtrL;
while(p!=NULL&&p->Data!=X)
p=p->Next;
return p;
}

1.2.平均时间性能为O(n)

typedef struct LNode *List;
struct LNode{
ElementType Data;
List Next;
};
struct Lnode L;
List PtrL;


List Insert(ElementTypr X,int i,List PtrL)//插入(在第i-1(1<=i<=n+1)个结点后插入一个值为X的新结点) 
{
List p,s;
if(i==1){//新结点插入在表头 
s=(List)malloc(sizeof(struct LNode));//申请、填装结点 
s->Data=X;
s->Next=PtrL;//PtrL是第一个结点,完成s结点插在链表头上
return s;//返回新表头指针 
}
p=FindKth(i-1,PtrL);//查找第i-1个结点 
if(p==Null){//第i-1个不存在,不能插入 
printf("参数i错");
retun NULL; 
}else{
s=(List)malloc(sizeof(struct LNode));//申请、填装结点 
s->Data=X;
s->Next=p->Next;//新结点插入在第i-1个结点的后面 
p->Next=s;
return PtrL; 
}
}//T(n)=O(n/2)


List Delete(int i,List PtrL)//删除 
{
List p,s;
if(i==1){//若是删除的是表的第一个结点 
s=PtrL;//s指向第一个结点 
if(PtrL!=Null) PtrL=PtrL->Next;//从链表中删除 
else return Null;
free(s);//释放被删除结点 
return PtrL;
}
p=FindKth(i-1,PtrL)//查找第i-1个结点 
if(p==PtrL){
printf("第%d个结点不存在",i-1); return NULL;
}else if(p->Next==NULL){
printf("第%d个结点不存在",i); return NULL;
}else{
s=p->Next;//s指向第i个结点 
p->Next=s->Next;//从链表中删除 
free(s);//释放被删除结点 
return PtrL;
}
} //T(n)=O(n/2)

转载于:https://www.cnblogs.com/chy89224/p/6379666.html

线性表的链表存储实现相关推荐

  1. 线性单链表存储结构c语言代码,单链表定义-(线性表的链表存储结构)

    线性表分为:顺序存储结构和连存储结构 顺序存储结构的优点: 1.空间利用率高,几乎不需要额外的空间开销. 2.数据的逻辑结构和物理结构完全一致. 3.结点地址计算的时间和线性表的规模大小无关. 4.可 ...

  2. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 。 A 单链表 B 静态链表 C 线性链表 D 顺序存储结构

    1.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 . A 单链表 B 静态链表 C 线性链表 D 顺序存储结构 答案:B 2.静态链表中指针表示的是() A 内存地址 B下一元素地 ...

  3. 高级线性表——静态链表(最全静态链表解读)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  4. python的线性链表_Python线性表——单链表-阿里云开发者社区

    Python线性表--单链表 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继, ...

  5. 线性表-链式存储结构

    3.6 线性表的链式存储结构 3.6.1 顺序存储结构不足的解决办法 前面我们讲的线性表的顺序存储结构.它是有缺点的,最大的缺点就是插入和删除时需要移动大量元素,这显然就需要耗费时间.能不能想办法解决 ...

  6. Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题

    文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...

  7. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  8. 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现

    写在前面 不久前学习了数据结构线性表-数组-链表的相关知识,用C/C++语言实现了 单链表的系列相关操作 .见往期博客: 数据结构实验2_C语言_基于顺序表的非递减有序表的合并.线性表元素的增.删.改 ...

  9. 头歌实践教学平台数据结构与算法:02线性表——反转链表(拓展)

    针对数据结构02线性表--反转链表(拓展)在头歌平台练习过程中的完成代码,每题思路单独在每一关中解释.如有其他需求请留言. 第一关 已知一个带头结点的单链表L,将L反转并返回反转后的单链表.要求将L的 ...

最新文章

  1. 2022-2028年中国刀具行业投资分析及前景预测报告
  2. 路由器的转发能力PPS
  3. android 多结点进度条,Android使用Kotlin实现多节点进度条
  4. SQL SERVER 如果判断text类型数据不为空
  5. 《RabbitMQ实战指南》笔误及改进记录
  6. python类的成员函数_注入一个python类成员函数
  7. Java写入Excel文件
  8. java 垃圾回收机制_Java的垃圾回收机制
  9. 牛x!一款比传统数据库快 100-1000 倍的数据库,来认识一下?
  10. C++ I/O库练习
  11. 颠覆传统网络管理 Aruba新一代网络解决方案重磅呈现
  12. Edraw Max 9.4中文版激活教程
  13. vb读取mysql数据库数据_VB读取ORACLE数据库的两种方法
  14. eclipse打包java_eclipse实现将Java项目打包成jar包
  15. Kuma是什么? Kuma1.0 GA 发布了包含70+新特性和改进
  16. 无法设置默认打开方式怎么办
  17. 为什么很多公司都在招测试开发?
  18. 计算机中日期函数的应用,解读:使用EXCEL中的TEXT函数将文本转换为日期
  19. 1.01_AFNetworking(4.0.1)源码分析(一)
  20. CSDN个人博客访问量突破300万

热门文章

  1. karaf中利用Bundle引入外部log4j配置文件
  2. nth-child和蝉原则实现的奇妙随机效果(译)
  3. jQuery操作radio、checkbox、select总结
  4. mybatis笔记3 一些原理的理解
  5. 使用csc手动编译cs文件
  6. PyQt学习笔记(二)将PyQt项目转化为WIN下的可执行程序
  7. Ranger架构剖析
  8. Kafka常见痛点及优化方案
  9. Git Flow分支管理
  10. 为什么电脑不能打字_电脑不能打字怎么办?键盘没坏但无法打字的解决方法