今天抽了点时间,复习了一下链表,总结了建立,删除,插入,查找的操作方法。
源码如下:
<!---->#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;
p =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;
}
有点少,将就着看吧。转载注明:www.cnblogs.com/shiyangxt
分享到:
相关推荐
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
数据结构和算法分析源码:链表 排序 树 图等
数据结构与算法(Python) 一、引入概念 1-01算法引入 1-02 时间复杂度与大O表示法 1-03-最坏时间复杂度与计算规则 1-04-常见时间复杂度与大小关系 1-05-代码执行时间测量模块 1-06-Python列表类型不同操作的...
项目标题:Python数据结构与算法源码集合 项目概述: 本项目采用Python语言编写,包含了丰富的数据结构与算法实现。全套源码共40个文件,其中39个为Python源文件(.py),以及1个Git忽略配置文件(.gitignore),...
此为数据结构与算法(C#语言描述) 一书的部分源码 本书是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。本书介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构...
数据结构与算法 c语言 线性表-静态链表 静态链表源码
数据结构与算法分析源码:涵盖单链表 双链表 循环链表 队列 堆栈 图 排序等信息
全集内容结构如下: ├─图 │ ├─关键路径(有向无环图及其应用2) │ │ 1.txt │ │ ALGraph.cpp │ │ ALGraph.h │ │ CriticalPath.cpp │ │ CriticalPath.h │ │ InfoType.cpp │ │ InfoType.h │ │ ...
数据结构-基本算法-静态链表(学生时代源码,调试可运行)
约瑟夫生者死者问题是数据结构与算法中的经典问题,本项目基于单向循环链表这一数据结构实现,并使用 tkinter技术 实现约瑟夫问题的可视化。项目使用了图形用户界面GUI技术,使用的开发工具为PyCharm 2021.3。实现了...
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和...
链表 二叉树 二分查找 链队列 链栈 平衡树 顺序表 图 字符处理等源码实现
基础的数据结构和算法C、C++、Java实现,有线性表、链表、队列、二叉树、图、查找、排序等等,全是最标准的实现,可以用来学习也可以直接使用。用来学习的话,里边有每种算法一步一步实现的图片,更加清晰。
逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。
多种语言包括java、python、c语言、go语言、php等来实现的数据结构的源码,包含数组、 链表、栈、队列、递归、排序、二分查找、散列表、二叉树、堆、图、回溯、分治、动态规划的实现方法。非常适合学习数据结构的小...
提供了有关使用算法和数据结构的一个详尽的介绍。Bucknall先从算法性能的讨论开始,涵盖了诸如数组、链表和二叉树等内容。这本书强调了查找算法(如顺序和二分查找),另外也重点介绍了排序算法(包括冒泡排序、插入...
项目组内部培训使用PPTX课件,实习生、初级程序员必须掌握的9大算法和常用类型的数据结构(数组、链表、哈希)。
数据结构-基本算法-孩子兄弟链表(学生时代源码,调试可运行)
本项目主要使用Java实现各种经典常用数据结构及其算法,包括但不仅限于链表、栈,队列,树,图等经典数据结构,持续更新中... 目前,该项目具体包括如下内容: 单向链表的数据结构及其相关算法:单向链表结构包含两...