数据结构实验 2 单链表的实现

数据结构之单链表实验 单链表实验实验目的实验环境实验要求实验内容源代码运行结果 实验目的 掌握线性表的定义、特点、逻辑结构,理解线性表的抽象数据类型。 熟练掌握线性表的两种存储结构的结构类型定义、特点和基本操作的实现。 通过本次实验帮助学生加深对线性表的理解,并加以应用; 实验环境 CodeBlocks 实验要求 1.熟悉c语言的语法知识; 2.了解线性表的逻辑结构特性; 3.掌握线性表的链式存储结构—单链表的定义、创建、插入、删除、取值等基本操作; 实验内容 完成单链表的基本操作(定义、初始化、插入、删除、定位等)的汇总, 阅读详情

一、实验目的

1.掌握单链表的定义。

2.理解线性表的链式存储结构。

3.掌握单链表的初始化、头插法、尾插法、打印、判断空表、清空链表、求表长、按址查找、按值查找、插入、删除等基本操作。

二、实验要求

1. 写出单链表的操作的详细算法步骤;

2. 使用C/C++实现单链表,并编译运行。

三、实验过程

实验环境:visual studio 2017

实验步骤:

1.初始化链表L,定义函数名为Init_List;

2.头插法创建链表L,定义函数名为Create_Head;

3.尾插法创建链表L,定义函数名为Create_Behind;

4.打印链表L,定义函数名为Print_List;

5.判断链表L是否为空表,定义函数名为Empty_List;

6.清空链表L,定义函数名为Clear_List;

7.求链表L表长,定义函数名为Length_List;

8.查找第location个结点的元素值,定义函数名为Get_Data;

9.查找第一个值为e的元素的位置,定义函数名为Locate_Data;

10.在顺序表L第location个位置插入一个元素e,定义函数名为Insert_List;

11.将顺序表L第location个元素删除,定义函数名为Delete_List;

Linked_List.h

#include<stdio.h>       //调用头文件
#include<stdlib.h>      //调用头文件
#define ELEMTYPE int    //用#define定义一个标识符ELEMTYPE表示int

typedef struct Lnode      //构建一个结构体存储链表信息
{
	ELEMTYPE data;         //数据域——存储元素值
	struct Lnode* next;    //指针域——指向该结点的直接后继
}LNode,*List;    //LNode为结构体类型别名,List为结构体指针

void Init_List(List* L);      //声明初始化函数-Init_List
void Create_Head(List* L);    //声明头插法创建链表函数-Create_Head
void Create_Behind(List* L);  //声明尾插法创建链表函数-Create_Behind
void Print_List(List L);      //声明打印函数-Print_List
bool Empty_List(List L);      //声明判断空表函数-Empty_List
void Clear_List(List* L);     //声明清空函数-Clear_List
int Length_List(List L);      //声明求表长函数-Length_List
void Get_Data(List L, int location, ELEMTYPE* e);    
//声明按位置查找元素值函数-Get_Data
int Locate_Data(List L, ELEMTYPE e);    
//声明按值查找元素位置函数-Locate_Data
void Insert_List(List* L, int i, ELEMTYPE e); //声明插入函数-Insert_List
void Delete_List(List* L, int i);    //声明删除函数-Delete_List

Linked_List.c

#include "Linked_List.h"    //调用头文件

void Init_List(List* L)    //初始化链表L
{
	(*L) = (List)malloc(sizeof(LNode));  //用malloc给链表L分配一块内存
	(*L)->next = NULL;                   //将头指针置为空
}

void Create_Head(List* L)    //头插法创建链表L
{
	int length;              //定义整型变量length表示链表L表长
	printf("Please input the length:");    //提示输入表长length
	scanf("%d", &length);                  //输入表长length
	for (int n = 1; n <= length; n++)      //向链表L中添加n个结点
	{
		List p;                             //定义结构体指针类型变量p
		p = (List)malloc(sizeof(LNode));    //用malloc给p分配一块内存
		printf("Please input the data:");   //提示输入结点p的数据域
		scanf("%d", &p->data);              //输入结点p的数据域
		p->next = (*L)->next;    //p作为新的首元结点,指针域指向原来的首元结点
		(*L)->next = p;      //更新首元结点
	}
}

void Create_Behind(List* L)    //尾插法创建链表L
{
	int length;          //定义整型变量length表示链表L长度
	List rear = (*L);    //rear指向尾结点,初始时指向头结点
	printf("Please input the length:");    //提示输入表长length
	scanf("%d", &length);                  //输入表长length
	for (int n = 1; n <= length; n++)      //向链表L中添加n个结点
	{
		List p;                              //定义结构体指针类型变量p
		p = (List)malloc(sizeof(LNode));      //用malloc给p分配一块内存
		printf("Please input the data:");    //提示输入结点p的数据域
		scanf("%d", &p->data);               //输入结点p的数据域
		p->next = NULL;                      //p为尾结点,指针域为空
		rear->next = p;    //原来的尾结点rear的指针域指向现在的尾结点p
		rear = p;          //更新尾结点
	}
}

void Print_List(List L)    //打印链表L
{
	List p = L;            //定义结构体指针类型变量p为头结点
	printf("The linked list is:");    //提示输出链表L
	while (p->next != NULL)           //扫描链表L
	{
		p = p->next;                  //当前p为原来p的后继结点
		printf("%d ", p->data);       //打印p的数据域
	}
	printf("\n");                    //换行
}

bool Empty_List(List L)     		 //判断链表是否为空
{
	if (L->next == NULL)    			 //链表为空
	{
		printf("This list is empty.\n");    //表示链表L为空
		return true;   						 //返回true
	}
	else                     				 //链表L不为空
	{
		printf("This list isn't empty.\n"); //表示链表L不为空
		return false;    						 //返回false
	}
}

void Clear_List(List* L)      //清空链表L
{
	List p = (*L)->next,q;    //定义结构体指针变量q,p为首元结点
	while (p != NULL)         //扫描链表
	{
		q = p->next;          //q为p的后继结点
		free(p);	           //释放结点p所占空间
		p = NULL;            //防止出现悬空指针(失效指针)
		p = q;               //当前p为原来p的后继结点
	}
	(*L)->next = NULL;      //清空链表L后头指针为空
}

int Length_List(List L)    //求链表L表长(元素个数)
{
	int length = 0;        //定义整型变量length记录链表表长
	L = L->next;           //L为首元结点
	while (L != NULL)      //扫描链表L
	{
		length++;          //表长length加1
		L = L->next;       //当前L为原来L的后继结点
	}
	return length;        //返回链表L表长
}

void Get_Data(List L, int location,ELEMTYPE* e)    
//从首元结点开始查找第location个结点并将该结点的数据域赋值给e(按位置查找元素值)
{
	int length = (Length_List(L));   //定义整型变量length表示链表L表长
	if (location<1 || location>length)    //判断location的值是否合法
	{
		printf("get failed\n");           //提示location的值不合法
		return;                           //结束函数
	}
	else                                 //合法
	{
		List p = L;                      //定义结构体指针类型变量p
		for (int j = 0; j < location; j++)   //扫描链表顺序存取
		{
			p = p->next;                     //当前p为原来p的后继结点
		}
		(*e) = p->data;           //将第location个结点的数据域赋值给e
	}
}

int Locate_Data(List L, ELEMTYPE e)    
//查找元素e在链表L中的位置(按值查找元素位置)
{
	List p=L;    //定义结构体指针类型变量p
	for (int location = 1; location <= Length_List(L); location++)    
//扫描链表L
	{
		p = p->next;            //当前p指向原来p的后继结点
		if (p->data == e)       //判断p指向的结点的数据域与e是否相等
			return location;    //相等则返回元素e的位置location
	}
	printf("locate failed\n");         //提示查找失败
	return 0;                          //查找失败返回0
}

void Insert_List(List* L, int location, ELEMTYPE e)    
//在第location个结点上插入元素e
{
	if (location > Length_List(*L) + 1 || location < 1)    
//判断location的值是否合法
	{
		printf("insert failed\n");    //location的值非法
		return;                       //退出函数
	}
	List p = (*L);                    //定义结构体指针类型变量p
	for (int n = 1; n < location; n++)//查找链表的第location-1个结点
	{
		p = p->next;                  //当前p为原来p的后继结点
	}
	List q;                          //定义结构体指针类型变量q
	q = (List)malloc(sizeof(LNode)); //用malloc给q分配一块内存
	q->data = e;                     //元素e存放至结点q的数据域
	q->next = p->next;               //p的后继结点存放至q的指针域
	p->next = q;                     //q为p的后继结点
}

void Delete_List(List* L, int location)    //删除第location个结点
{
	if (location<1 || location>Length_List(*L))
//判断location的值是否合法
	{
		printf("delete failed\n");      //location的值非法
		return;                         //退出函数
	}
	List p = (*L);                     //定义结构体指针类型变量p
	for (int n = 1; n < location ; n++)//查找链表的第location-1个结点
	{
		p = p->next;      //当前p为原来p的后继结点
	}
	List q = p->next;     //定义结构体指针类型变量q为第location个结点
	p->next = q->next; 
//第location-1个结点的指针域改为第location个结点的后继结点
	free(q);     //释放第location个元素的空间
	q = NULL;    //防止出现悬空指针(无效指针)
}

以下为测试函数

1.测试初始化函数Init_List;头插法函数Create_Head;打印函数Print_List.

#include "Linked_List.h"    //调用头文件

int main(void)        //main()函数
{
	List L;           //定义结构体指针变量L
	Init_List(&L);    //调用Init_List函数将链表L初始化
	Create_Head(&L);  //调用Create_Head函数用头插法创建链表L
	Print_List(L);    //调用Print_List函数打印链表L
	return 0;         //返回值
}

2.测试尾插法函数Create_Behind.

#include "Linked_List.h"    //调用头文件

int main(void)            //main()函数
{
	List L;		        //定义结构体指针变量L
	Init_List(&L);        //调用Init_List函数将链表L初始化
	Create_Behind(&L);    //调用Create_Behind函数用尾插法创建链表L
	Print_List(L);        //调用Print_List函数打印链表L
	return 0;             //返回值
}

3.测试判断空表函数Empty_List.

#include "Linked_List.h"    //调用头文件

int main(void)		    //main()函数
{
	List L;		       //定义结构体指针变量L
	Init_List(&L);       //调用Init_List函数将链表L初始化
	Empty_List(L);		//调用Empty_List函数判断链表L是否为空
	Create_Behind(&L);	//调用Create_Behind函数用尾插法创建链表L
	Empty_List(L);		//调用Empty_List函数判断链表L是否为空
	return 0;				//返回值
}

4.测试清空链表函数Clear_List.

#include "Linked_List.h"    //调用头文件

int main(void)		       //main()函数
{
	List L;		       //定义结构体指针变量L
	Init_List(&L);		//调用Init_List函数将链表L初始化
	Create_Behind(&L);	//调用Create_Behind函数用尾插法创建链表L
	Empty_List(L);		//调用Empty_List函数判断链表L是否为空
	Clear_List(&L);		//调用Clear_List函数清空链表L
	Empty_List(L);		//调用Empty_List函数判断链表L是否为空
	return 0;            //返回值
}

5.测试求表长函数Length_List.

#include "Linked_List.h"    //调用头文件

int main(void)		       //main()函数
{
	List L;		          //定义结构体指针变量L
	Init_List(&L);		   //调用Init_List函数将链表L初始化
	Create_Head(&L);		   //调用Create_Head函数用头插法创建链表L
printf("The length of this list is:%d\n", Length_List(L));     
//输出表长
	return 0;					//返回值
}

6.测试按址查找函数Get_Data.

#include "Linked_List.h"    //调用头文件

int main(void)		        //main()函数
{
	List L;		          	//定义结构体指针变量L
	Init_List(&L);		   	//调用Init_List函数将链表L初始化
	Create_Head(&L);	   	   	//调用Create_Head函数用头插法创建链表L
	Print_List(L);          	//调用Print_List函数打印链表L
	ELEMTYPE e;			   	//定义查找到的元素e
	int location;		  	  	//定义待查找位置location
	printf("Please input the location of the element you want to get:");    //提示输入待查找位置location
	scanf("%d", &location);		       //输入待查找位置location
	Get_Data(L,location,&e);		       //调用Get_Data函数按址查找
	printf("The element is:%d", e);    //输出查找到的元素e
	return 0;								//返回值
}

7.测试按值查找函数Locate_List

#include "Linked_List.h"    //调用头文件

int main(void)		   //main()函数
{
	List L;		       //定义结构体指针变量L
	Init_List(&L);		//调用Init_List函数将链表L初始化
	Create_Behind(&L);	//调用Create_Behind函数用头插法创建链表L
	Print_List(L);       //调用Print_List函数打印链表L
	ELEMTYPE e;			//定义待查找结点的数据域e
	printf("Please input the element you want to search:");		
//提示输入待查找结点的数据域e
	scanf("%d", &e);		//输入带查找元素e
	printf("The location of this element is:%d", Locate_Data(L, e));	//调用Locate_Data函数按值查找结点位置并输出
	return 0;				//返回值
}

8.测试插入函数Insert_List

#include "Linked_List.h"    //调用头文件

int main(void)		       //main()函数
{
	List L;		           //定义结构体指针变量L
	Init_List(&L);		    //调用Init_List函数将链表L初始化
	Create_Behind(&L);		//调用Create_Behind函数用头插法创建链表L
	Print_List(L);           //调用Print_List函数打印链表L
	ELEMTYPE e;				//定义待查找结点的数据域e
	printf("Please input the element you want to search:");		
`//提示输入待查找结点的数据域e
	scanf("%d", &e);		//输入带查找元素e
	printf("The location of this element is:%d", Locate_Data(L, e));	//调用Locate_Data函数按值查找结点位置并输出
	return 0;				//返回值
}

9.测试删除函数Delete_List

#include "Linked_List.h"    //调用头文件

int main(void)		       //main()函数
{
	List L;		          //定义结构体指针变量L
	Init_List(&L);		   //调用Init_List函数将链表L初始化
	Create_Behind(&L);	   //调用Create_Behind函数用头插法创建链表L
	Print_List(L);		   //调用Print_List函数打印链表L
	int location;        //定义待删除结点位置location
	printf("The location of the element to be deleted is:");   
 	//提示输入删除结点的位置
	scanf("%d", &location);        //输入需要删除结点的位置
	Delete_List(&L, location);
//调用Delete_List函数删除第location个结点
	Print_List(L);		         //调用Print_List函数打印链表L
	printf("The length of this list is:%d\n", Length_List(L));    
 //输出表长
	return 0;		  //返回值
}

四、实验结果及分析

测试函数

测试用例

运行结果

Init_List Creat_Head

Print_List

5

1,2,3,4,5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:5 4 3 2 1

-1

Please input the length:-1

The linked list is:

Create_Behind

5

1,2,3,4,5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:1 2 3 4 5

0

Please input the length:0

The linked list is:

Empty_List

5

1,2,3,4,5

This list is empty.

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

This list isn't empty.

0

This list is empty.

Please input the length:0

This list is empty.

Clear_List

5

1,2,3,4,5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

This list isn't empty.

This list is empty.

-1

Please input the length:-1

This list is empty.

This list is empty.

Length_List

5

1,2,3,4,5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The length of this list is:5

-1

Please input the length:-1

The length of this list is:0

Get_Data

5

1,2,3,4,5

5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:5 4 3 2 1

Please input the location of the element you want to get:5

The element is:1

6

Please input the location of the element you want to get:6

get failed

The element is:-858993460

0

Please input the location of the element you want to get:0

get failed

The element is:-858993460

Locate_Data

5

1,2,3,4,5

4

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:1 2 3 4 5

Please input the element you want to search:4

The location of this element is:4

6

Please input the element you want to search:6

locate failed

The location of this element is:0

Insert_List

5

1,2,3,4,5

6

2

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:1 2 3 4 5

The element to be inserted is:6

The location of the element to be inserted is:6

The linked list is:1 2 3 4 5 6

The length of this list is:6

6

0

The element to be inserted is:6

The location of the element to be inserted is:0

insert failed

The linked list is:1 2 3 4 5

The length of this list is:5

6

7

The element to be inserted is:6

The location of the element to be inserted is:7

insert failed

The linked list is:1 2 3 4 5

The length of this list is:5

Delete_List

5

1,2,3,4,5

5

Please input the length:5

Please input the data:1

Please input the data:2

Please input the data:3

Please input the data:4

Please input the data:5

The linked list is:1 2 3 4 5

The location of the element to be deleted is:5

The linked list is:1 2 3 4

The length of this list is:4

0

The location of the element to be deleted is:0

delete failed

The linked list is:1 2 3 4 5

The length of this list is:5

6

The location of the element to be deleted is:6

delete failed

The linked list is:1 2 3 4 5

The length of this list is:5

编写实现单链表的各种基本运算,并在此基础上设计一个主函数完成如下功能: ##单链表基本运算的笔记(可供一些初学者学习) (1)初始化单链表L。 (2)依次采用尾插法插入h、e、l、l、o。 (3)输出单链表L。 (4)输出单链表L的长度。 (5)判断单链表L是否为空。 (6)输出单链表L的第2个和第4个元素。 (7)输出元素o位置。 (8)在单链表L的第4个位置上插入元素r。 (9)输出单链表L。 (10)删除单链表L的第3个元素。 (11)输出单链表L。 (12)释放单链表L。 #include <stdio.h> #include <malloc.h&gt 阅读详情

相关推荐

数据结构实验:单链表基本操作实现与调试指南

数据结构是计算机科学的核心基础,它研究数据的组织、存储与操作方式,直接影响程序的效率与性能。其核心原理在于通过特定的逻辑结构(如线性、树形)与物理存储方式,在时间与空间复杂度间取得平衡。掌握数据结构对于编写高效、可维护的代码具有重要价值,广泛应用于数据库索引、编译器设计、网络路由等场景。链表作为一种基础的动态数据结构,完美体现了链式存储思想。本文聚焦单链表这一关键概念,深入剖析其节点与指针模型,并详细讲解创建、遍历、插入、删除等基本操作的实现逻辑与工程实践中的调试技巧,帮助你从理论到代码实现平滑过渡,攻克数

weixin_31155097的博客 274

数据结构实验之单链表----单链表的基本操作

单链表

2201_75867204的博客 3602

数据结构实验2:C++实现单链表类

太简单了,没啥可说的,代码意义明白如话。 题目与要求: 实验2 2.1 实验目的 熟练掌握线性表的链式存储结构。 熟练掌握单链表的有关算法设计。 根据具体问题的需要,设计出...

u25th_engineer的博客 2266

【数据结构实验】单链表实验

实验内容 1、利用头插法或尾插法建立单链表 2、对已建立的单链表实现插入、删除等基本操作; 3、输出链表所有结点数据 4、编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表并计算表长。.........

山风不打咩的博客 6061

《数据结构》实验二: 线性表实验

一..实验目的      巩固线性表的数据结构,学会线性表的应用。 1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。 2.学习运用线性表的知识来解决实际问题。 3.进一步巩固程序调试方法。 4.进一步巩固模板程序设计。 二.实验时间    准备时间为第2周到第4周,具体集中实验时间为第4周第2次课。2个学时。 三..实验内容 1.建立

呆子伯云 1512

本科课程【数据结构与算法】实验2——单链表与双向循环链表的插入、删除操作(C++实现)

大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never let it rest, until good is better, and better best. 近期会把自己本科阶段的一些课程设计、实验报告等分享出来,供大家参考,希望对大家有帮助。 持续更新。。。。。。。 一、 实验目的 掌握线性表的链表表示; 实现单链表的插入操作 实现单链表的删除操作 实现.

1+1=王的博客 2233

2、数据结构实验-单链表的实现

cpp文件:/**************************************************** @title: 数据结构实验 @name: <实验2-2> 线性表的链式存储结构 @object: [实验目的] 单链表的存储结构及其基本操作的实现 [实验提示] 1. 在linklist.h中实现单链

阿婷的博客 509

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

数据结构实验一(2):单链表 C++实现

数据结构实验:C++实现链表 实验内容 定义一个包含学生信息(学号,姓名,成绩)的单链表,使其具有如下功能(参见教材中基本操作): (1) 前插法或者后插法构建表; (2) 逐个显示学生表中所有学生的相关信息(显示表,即遍历表); (3) 根据姓名进行查找,返回此学生的学号和成绩(查找); (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩)(取值 ); (5) 给定一个学生信息,插入到表中指定的位置(插入); (6) 删除指定位置的学生记录(删除); (7) 统计表中学生个数(相当于求

qq_45050714的博客 1740

最新Mamba环境配置教程:从CUDA到causal-conv1d的完整安装流程

本文提供最新Mamba环境配置教程,涵盖从CUDA到causal-conv1d的完整安装流程。针对深度学习领域的长序列处理需求,详细指导如何正确配置CUDA工具链、安装PyTorch及关键依赖causal-conv1d,解决常见报错问题,并验证mamba-ssm集成效果。

bush的博客 417

SORT算法在遮挡下总跟丢?深入OC-SORT源码,拆解其三大创新点如何解决卡尔曼滤波的顽疾

本文深入解析OC-SORT算法如何通过三大创新点解决多目标跟踪中的卡尔曼滤波顽疾。OC-SORT引入在线平滑虚拟轨迹技术(OOS)、观测中心动量匹配机制(OCM)和基于最后观测的轨迹恢复(OCR),显著提升了遮挡场景下的跟踪性能。实验数据显示,相比传统SORT算法,OC-SORT在MOT17数据集上MOTA提升5.7%,遮挡恢复成功率提高64.2%,为Multi-Object Tracking领域带来突破性进展。

weixin_42547431的博客 238

数据结构第五版第二章实验2.实现单链表的各种基本运算

编写一个程序exp2-2.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char)并在此基础上完成如下功能:(1)初始化单链表h; (2)采用尾插法依次插入元素a,b,c,d,e; (3)输出单链表h; (4)输出单链表h长度; (5)判断单链表h是否为空; (6)输出单链表h的第3个元素; (7)输出元素a的位置; (8)在第4个元素位置上插入元素f; (

GJG666的博客 9752

使用 Cadence ams 仿真器 对 混合信号电路 进行仿真

文章目录Cadence 基于ams仿真器的混合信号电路仿真建立数字(Digital)模块建立 Analog - Digital 混合仿真原理图建立 Analog - Digital 混合仿真config文件配置混合信号电路仿真环境针对混合信号电路demo进行仿真 Cadence 基于ams仿真器的混合信号电路仿真 你好,这里是一篇关于使用 Cadence 软件通过 ams 仿真器对混合信号电路(D...

mymatin1004的博客 2万+

关于数据结构实验课单链表的相关代码

编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表并计算表长,要求利用原来两个单链表的结点存放归并后的单链表(选做)。我们专业学习的是c++,这本书主要是c++,但是有c的内容,对于我自己来说也算是额外学到了一些新东西。代码详解见严蔚敏《数据结构c语言第二版》2.5.2节内容。、对已建立的单链表实现插入、删除等基本操作;参考教材为严蔚敏《数据结构c语言第二版》选做内容并未添加,日后可能会补。、利用头插法或尾插法建立单链表;、输出链表所有结点数据;

2301_81187330的博客 119

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 521

rk3568 android 11.0 userdata 改为ext4格式

功能:解决设备在恢复出厂设置进行擦除数据的时候卡住问题。 1.修改userdata分区为ext4格式 diff --git a/device/rockchip/common/scripts/fstab_tools/fstab.in b/device/rockchip/common/scripts/fstab_tools/fstab.in index 583e75579d..036336835d 100755 --- a/device/rockchip/common/scripts/fstab_tools/

chgh1306的专栏 2576

数据结构-实验2 单链表

【问题描述】 设计一个单链表操作演示程序。 【基本要求】 设计实现一个带头结点的单链表的操作演示程序,提供一个用户界面,可演 示的基本功能包括: (1)初始化单链表; (2)输入并建立单链表;(头插入法、尾插入法均可) (3)输出单链表中的元素; (4)在单链表指定位置插入元素; (5)在单链表指定元素之前插入元素; (6)删除单链表指定位置的元素; (7)删除单链表指定元素之前的元素; (8)删...

weixin_43488714的博客 1320

计算光刻效率革命:为什么Hopkins模型比Abbe模型快?深入解析TCC的魔力

本文深入解析了计算光刻中Hopkins模型相比Abbe模型的效率优势,重点探讨了TCC(透射交叉系数)的工程智慧。通过预计算光学系统特性并复用TCC矩阵,Hopkins模型实现了数量级的加速,特别适用于复杂照明条件下的光刻仿真。文章详细介绍了TCC的物理意义、模态分解技术以及GPU并行计算等关键加速策略,为半导体制造中的光刻工艺优化提供了实用见解。

weixin_33364627的博客 389

李春葆 上机实验题2——实验题2∶实现单链表的各种基本运算的算法

1.掌握线性表的顺序表示与实现2.掌握线性表的链式表示与实现3.掌握线性表的插入、删除、查找、排序、合并等操作4.加深对线性表的理解,逐步培养解决实际问题的能力。

此人很懒 777

网页内容抓取的艺术:使用R语言解析动态网页

本文探讨了使用R语言处理动态网页数据的方法。针对AJAX加载的学术网站,传统的静态抓取和RSelenium方法存在会话终止、浏览器错误等问题。通过分析发现内容通过admin-ajax.php加载,提出使用httr2模拟POST请求获取数据,配合rvest解析HTML内容。该方法避免了浏览器自动化的弊端,实现了高效稳定的动态内容提取,为处理类似AJAX网站提供了通用解决方案。

m0_74337424的博客 52

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构实验一 线性表、堆栈和队列的操作与实现

一、实验目的: 1、 领会单链表存储结构和掌握单链表中的各种基本运算算法设计; 2、 领会栈链存储结构和掌握栈链中的各种基本运算算法设计; 3、 领会环形队列存储结构和掌握环形队列中的各种基本运算算法设计; 4、 深入掌握单链表应用的算法设计; 5、 掌握栈应用的算法设计; 二、使用仪器、器材 微机一台 操作系统:WinXP 编程软件:C/C++编程软件 三、实验内容及原理 填入自己的内容(思路或算法流程图、源代码、说明等) 1、教材P74实验题2:实现单链表的各种基本运算的算法 编写一个程序linklis

GHY 3314

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数据结构 C语言版 实验3 单链表的基本操作实现

数据结构 C语言版 实验3 单链表的基本操作实现 (1)实验目的 通过该实验,深入理解链表的逻辑结构、物理结构等概念,掌握链表基本操作的编程实现,熟练掌握C语言中指针的操作。和实验3对比,掌握线性结构两种不同存储方式的区别。 (2)实验内容 编程实现链表下教材第二章定义的线性表的基本操作,最好用菜单形式对应各个操作,使其编程一个完整的小软件。注意,每个功能模块一定要考虑非法的情况,并作出相应的提示,例如:求前驱,要分别能够测试第一个元素的前驱、其他正常的元素的前驱、输入一个在表中不存在的元素求其前驱,这

qq_52008568的博客 1728

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据结构实验2-2:单链表及其相关操作

问题描述:初始化单链表并在其基础上完成一系列操作 作者:何知令 完成时间:2017年5月9日 代码: /* 问题描述:初始化单链表并在其基础上完成一系列操作 作者:何知令 完成时间:2017年5月9日 */ #include #include #define MaxSize 15 typedef char ElemType; typedef struct LNode//单链表结构体

新生啸月的博客 747

数据结构实验二:单链表

上课没听,现学现卖 ???? 实验二:实现单链表各种基本运算的算法 内容:编写程序实现单链表各种基本运算,并编写main方法测试程序可行性。主要完成以下功能: 1、 初始化单链表; 2、 一次采用尾插法插入a、b、c、d、e元素; 3、 输出单链表; 4、 输出单链表长度; 5、 判断单链表是否为空; 6、 输出单链表的第3个元素; 7、 输出元素d的位置; 8、 在第4个元素位置上插入f元素; 9、 输出插入后的单链表; 10、 删除单链表中的第2个元素; 11、 输出删除后的单链表; 12、 (选做)单

sunhongxuan666的博客 966

数据结构实验题---实现单链表各种基本运算的算法

实现单链表的各种基本运算和整体建表算法

Li的博客 1155
上一篇: 数据结构实验 1 顺序表的实现
下一篇: 数据结构实验 3 双向链表的实现
Binkkkk
博客等级 码龄5年 303粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Binkkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值