编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作_编写程序将线性表用顺序表和双链表实现创建、插入、删除、查找及排序等基本操作。-程序员宅基地

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode{
	int data;				//链表数据
	struct LNode* next;		//链表指针
}LNode,*LinkList;

typedef enum __bool { false = 0, true = 1, } bool;

/*头插法-建立单链表*/
LinkList HeadCreate(LinkList la)
{
	int num;
	la=(LinkList)malloc(sizeof(LNode));		//建立头结点
	la->next=NULL;
	scanf("%d",&num);
	while(num!=10)
	{
		LNode *p=(LinkList)malloc(sizeof(LNode));
		p->data=num;
		p->next=la->next;
		la->next=p;
		scanf("%d",&num);
	}
	return la;
}

/*尾插法-建立单链表*/
LinkList TailCreate(LinkList la)
{
	int num;
	la=(LinkList)malloc(sizeof(LNode));
	la->next=NULL;
	LinkList s,r=la;
	scanf("%d",&num);
	while(num!=10)
	{
		s=(LinkList)malloc(sizeof(LNode));
		s->data=num;
		r->next=s;
		r=s;
		scanf("%d",num);
	}
	r->next=NULL;
	return la;
}

/*单链表遍历*/
void TravelList(LinkList la)
{
	LinkList p=la->next;
	while(p!=NULL)
	{
		printf("%d->",p->data);
		p=p->next;
	}
	printf("\n");
}

/*单链表的按位查找*/
LinkList GetElem(LinkList la,int i)
{
	int j=1;
	LNode* p=la->next;
	if(i<1)
		return NULL;
	while(p && j<i)
	{
		p=p->next;
		j++;
	}
	return p;
}

/*单链表的按值查找*/
LinkList LocalElem(LinkList la,int e)
{
	LNode* p=la->next;
	while(p!=NULL && p->data!=e)
		p=p->next;
	return p;
}

/*单链表插入操作*/
bool InsertList(LinkList la,int i,int e)
{
	//在la链表中的i位置插入数值e
	int j=1;
	LinkList p=la,s;
	while(p && j<i)
	{
		p=p->next;
		j++;
	}
	if(p==NULL)
		return false;
	if((s=(LinkList)malloc(sizeof(LNode)))==NULL)
		return false;
	s->data=e;
	s->next=p->next;
	p->next=s;
	return true;
}

/*单链表删除操作*/
bool DeleteList(LinkList la,int i)
{
	int j=1;
	LinkList p=la,q;
	while(p && j<i)		//p指向第i-1个元素
	{
		p=p->next;
		j++;
	}
	if(p==NULL || p->next==NULL)	    //表示不存在第i-1个和第i的元素
		return false;
	q=p->next;
	p->next=q->next;
	free(q);
	return true;
}

/*单链表的表长*/
int LengthList(LinkList la)
{
	int nLen=0;
	LinkList p=la->next;
	while(p)
	{
		p=p->next;
		nLen++;
	}
	return nLen;
}

/*单链表逆置*/
LinkList Reserve(LinkList la)
{
	if(la==NULL || la->next==NULL)
		return la;
	LinkList p=la->next,q=p->next,r=q->next;
	la->next=NULL;
	p->next=NULL;
	while(r!=NULL)
	{
		q->next=p;
		p=q;
		q=r;
		r=r->next;
	}
	q->next=p;
	la->next=q;
	return la;
}

int main()
{
	LNode la;
	LinkList p;
	p=HeadCreate(&la);				//头插法创建单链表
	TravelList(p);
	printf("%p\n",GetElem(p,1));	        //获得第1个结点地址
	InsertList(p,2,10);				//在链表的第2个位置插入元素10
	TravelList(p);
	DeleteList(p,3);				//删除链表的第3个元素
	TravelList(p);
	printf("%d\n",LengthList(p));	        //获得链表长度
	p=Reserve(p);
	TravelList(p);
	return 0;
}
//运行结果
//5 6 12 7 8 14 9 3 2 5 14 10					        头插法创建链表
//14->5->2->3->9->14->8->7->12->6->5->			显示链表
//00382490								        第一个结点的地址
//14->10->5->2->3->9->14->8->7->12->6->5->		插入元素值为10的结点
//14->10->2->3->9->14->8->7->12->6->5->			删除第三个结点
//11											获得链表长度
//5->6->12->7->8->14->9->3->2->10->14->			链表逆置
//Press any key to continue



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/foreverlove111/article/details/78394932

智能推荐

IDEA+Java+SSM+Mysql+Bootstrap实现Web学生信息管理系统_学生管理系统ssmidea-程序员宅基地

文章浏览阅读8.8k次,点赞12次,收藏170次。目录一、系统介绍1.开发环境2.技术选型3.系统功能二、系统展示1.登录系统​2.管理员-首页​3.管理员-学生管理​4.管理员-课程管理​5.管理员-班级管理​6.管理员-更改密码​7.用户-首页​8.用户-查看课表​9.用户-选课​三、部分代码ClassesControllerCourseControllerStudentControllerTeacherControllerUserController四、其他1_学生管理系统ssmidea

win10安装Ubuntu报错Error code: Wsl/Service/0x8007273d-程序员宅基地

文章浏览阅读4.9k次,点赞6次,收藏7次。下载完成后,启动安装报错,错误代码为0x8007273d。_error code: wsl/service/0x8007273d

Springboot/java/node/python/php基于Springboot的营养配餐评价系统【2024年毕设】-程序员宅基地

文章浏览阅读828次,点赞23次,收藏16次。springboot基于springboot考研资料分享系统。springboot基于springboot的仓储管理系统。开发软件:eclipse/myeclipse/idea。springboot中小型企业物流管理系统的设计与实现。springboot基于云计算的城乡医疗卫生服务系统。springboot消防志愿者服务系统的设计与实现。springboot健身房管理系统的设计与实现。springboot听见你的声音心理咨询网站。springboot数学建模论文阅卷系统。

MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本-程序员宅基地

文章浏览阅读354次。MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本https://www.cnblogs.com/ggg-327931457/p/9694516.html这篇文章解决了我的用“pip install mingw”或者“conda install mingw”无法安装mingw的问题,非常有帮助

[附源码]Python计算机毕业设计高校考研信息共享平台设计与开发_考研择校平台技术上是如何实现的-程序员宅基地

文章浏览阅读276次。项目运行环境配置:Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs。项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;_考研择校平台技术上是如何实现的

chatgpt赋能python:Python敲爱心代码的详细方法和注意事项_python爱心代码需要安装什么库-程序员宅基地

文章浏览阅读239次。您可能已经熟悉了Python中的绘图功能。它可以绘制简单的图形和图表,例如线图,柱状图和散点图。但是,您是否知道还可以在Python中绘制爱心?这是一种非常流行的图形,可以在情人节等浪漫场合使用。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于。_python爱心代码需要安装什么库

随便推点

sql中的模糊匹配与正则表达式_sql 模糊匹配-程序员宅基地

文章浏览阅读2.4k次。sql中的模糊匹配与正则表达式_sql 模糊匹配

Shp格式详解与在线打开、查看-程序员宅基地

文章浏览阅读7.6k次,点赞33次,收藏36次。使用3D模型在线转换网站进行shp格式在线打开、查看和转换,NSDT 3dconvert支持将shp格式在线转换为glb、gltf、obj、stl、dae、ply、off等格式。_shp

Unity2017 Timeline实例解析:游戏场景中的动画_timeline自定义轨道 2017-程序员宅基地

文章浏览阅读4.2k次。转载注明出处:点击打开链接Unity 2017.1 推出的Timeline功能,不仅可以高效的帮助大家实现游戏场景中的物体动画,还可以制作出更为复杂的过场动画及电影内容。今天这篇文章将由Unity大中华区技术经理成亮,通过实例分析让大家了解Timeline的多轨道,把各类场景中的元素整合实现更为复杂的动画。Timeline简介Timeline 是一套基于时间轴的多轨道动画系统,_timeline自定义轨道 2017

【经典算法题】零钱兑换_java 兑换零钱算法-程序员宅基地

文章浏览阅读2.4k次。【经典算法题】零钱兑换Leetcode 0322 零钱兑换题目描述:Leetcode 0322 零钱兑换分析本题的考点:背包问题。完全背包问题,amout为容量;物品体积为coins[i],价值为1。本题和Leetcode 0279 完全平方数十分类似,可以参考LC279的分析。注意本题和Leetcode 0518 零钱兑换 II的区别,LC518让求得是体积恰好是m的方案数,本题求的是体积恰好是m需要用的最少硬币数。代码C++class Solut_java 兑换零钱算法

精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!_数据结构 flash-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏4次。精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!\数据结构flash演示\版本1\数据结构flash演示\版本2\数据结构flash演示\版本3\数据结构flash演示\版本4\数据结构flash演示\版本5\数据结构flash演示\版本1\1-4 算法和算法分析 冒泡排序.swf\数据结构flash演示\版本1\10-1-1插入排序.swf\数据结构fl..._数据结构 flash

C语言经典算法题_c 语言算法题-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏48次。1. 有1、2、3、4个数字,能组成多少个互不相同且无重复的三位数?分别是多少?#include <stdio.h>void main(){ int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j=1;j<5;j++){ for(k=1;k<5;k++){ if(i!=j&&j!=k&&i!=k){ printf("%d,%d,%d",i,j,k); p_c 语言算法题

推荐文章

热门文章

相关标签