数据结构与算法:链表(源码)!

简介:

今天抽了点时间,复习了一下链表,总结了建立,删除,插入,查找的操作方法。

源码如下:

 

复制代码
#include < iostream >
using   namespace  std;

typedef 
struct  LNode 

int  data; 
struct  LNode  * next; 
}LNode,
* Llist; 

// 方法声明
LNode  * creat_head(); // 创建一个空表 
void  creat_list(LNode  * , int ); // 创建一个长度为n的线性链表 
void  insert_list(LNode  * , int , int  ); // 插入一个元素 
int  delete_list(LNode  * , int ); // 删除一个元素 

// 创建一个空链表 
LNode  * creat_head()

LNode 
* p; 

p
= (Llist)malloc( sizeof (LNode)); 

p
-> next = NULL; 

return (p); 


// 创建一个长度为n的线性链表 
void  creat_list(LNode  * head, int  n) 

LNode 
* p, * q;
int  i;
p
= head; 
for (i = 1 ;i <= n;i ++

q
= (Llist)malloc( sizeof (LNode)); 
cout
<< " data: " ;
cin
>> q -> data; 
q
-> next = NULL; 
p
-> next = q; 
= q; 



// 插入一个元素 
void  insert_list(LNode  * head, int  x, int  i ) 

int  j = 0 ;
LNode 
* p, * s; 
p
= head; 
while ((p != NULL) && (j < i - 1 )) 

p
= p -> next; 
j
++

if (p == NULL) 
exit(
0 ); 
s
= (Llist)malloc( sizeof (LNode)); 
s
-> data = x; 
s
-> next = p -> next; 
p
-> next = s; 
}

// 删除一个元素 
int  delete_list(LNode  * head, int  i) 

LNode 
* p, * q; 
int  j = 0
int  x; 
p
= head; 
while ((p != NULL) && (j < i - 1 )) 

p
= p -> next; 
j
++

if (p == NULL) 
exit(
0 ); 
q
= p -> next; 
p
-> next = q -> next; 
x
= q -> data; 
delete(q); 
return (x); 

// 输出
void  Print(LNode  * head,LNode  * p){
     
for (p = head -> next;p != NULL;) 
     { 
     cout
<< p -> data << endl; 
     p
= p -> next;
     } 
     } 
// 按序号查找
int  Find(LNode  * head,LNode  * p, int  i){
    
int  j = 0 ;
    
int  k;
    
for (p = head -> next;p != NULL;){
    j
++ ;
    
if (i == j)
    k
= p -> data;
    p
= p -> next;
    }
    
return  k;
}
// 主函数 
int  main() 

LNode 
* head, * p; 
int  find; 
int  n; 
int  x,i; 
int  b; 
int  clrscr(); 
head
= creat_head(); 
cout
<< " 请输入链表长: " << endl; 
cout
<< " n= " ;
cin
>> n; 
cout
<< " 请输入数值: " << endl; 
creat_list(head,n);
cout
<< " 您输入的链表为: " << endl; 
Print(head,p);
cout
<< " \n请输入您要插入的数:\n "
cout
<< " x= " ;
cin
>> x; 
cout
<< " \n请输入您要插入的位置:\n "
cout
<< " i= " ;
cin
>> i; 
insert_list(head,x,i); 
cout
<< " 您输入的链表为: " << endl; 
Print(head,p);
cout
<< " \n请输入您要删除的位置:\n "
cout
<< " i= " ;
cin
>> i; 
b
= delete_list(head,i);
cout
<< " 删除后的链表为: " << endl; 
Print(head,p);
cout
<< " 请输入您要查找的位置: " << endl;
cin
>> find;
cout
<< Find(head,p,find) << endl;
cout
<< " 请输入您要查找的位置: " << endl;
cin
>> find;
cout
<< Find(head,p,find) << endl;
cout
<< " 请输入您要查找的位置: " << endl;
cin
>> find;
cout
<< Find(head,p,find) << endl;
return   0 ;

复制代码

 本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/12/01/1345303.html,如需转载请自行联系原作者

相关文章
|
22天前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
35 0
|
2月前
|
存储 自然语言处理 数据库
【数据结构进阶】AVL树深度剖析 + 实现(附源码)
在深入探讨了AVL树的原理和实现后,我们不难发现,这种数据结构不仅优雅地解决了传统二叉搜索树可能面临的性能退化问题,还通过其独特的平衡机制,确保了在任何情况下都能提供稳定且高效的查找、插入和删除操作。
132 19
|
2月前
|
数据库 C++
【数据结构进阶】红黑树超详解 + 实现(附源码)
本文深入探讨了红黑树的实现原理与特性。红黑树是一种自平衡二叉搜索树,通过节点着色(红/黑)和特定规则,确保树的高度接近平衡,从而实现高效的插入、删除和查找操作。相比AVL树,红黑树允许一定程度的不平衡,减少了旋转调整次数,提升了动态操作性能。文章详细解析了红黑树的性质、插入时的平衡调整(变色与旋转)、查找逻辑以及合法性检查,并提供了完整的C++代码实现。红黑树在操作系统和数据库中广泛应用,其设计兼顾效率与复杂性的平衡。
211 3
|
2月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
3月前
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
116 29
|
3月前
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
154 25
|
3月前
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
284 0
|
4月前
|
机器学习/深度学习 存储 C++
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
227 5
|
5月前
|
数据库
数据结构中二叉树,哈希表,顺序表,链表的比较补充
二叉搜索树,哈希表,顺序表,链表的特点的比较
数据结构中二叉树,哈希表,顺序表,链表的比较补充
|
5月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
418 4