数据结构上机考试练习代码,置于此以备后用!
#include<stdio.h>
#define ListSize 100
//定义顺序表存放的数据类型
typedef int DataType;
//定义顺序表的结构
typedef struct{
//用于存放元素的数组
DataType data[ListSize];
//用于标示顺序表元素个数的变量
int length;
}Seqlist;
//顺序表插入
void InsertList(Seqlist *L,DataType x,int i)
{
int j;
//如果插入位置i小于1或大于当前顺序表长度,则提示出错
if(i<1||i>L->length+1)
{
Error("position error");
return;
}
//如果当前顺序表长度已达峰值,则提示溢出
if(L->length>=ListSize)
{
Error("overflow");
return;
}
//循环后移插入位置及其后边的元素
for(j=L->length-1;j>i-1;j--)
{
L->data[j+1]=L->data[j];
}
//插入数据
L->data[i-1]=x;
L->length++;
}
//打印错误
void Error(char *c)
{
printf("there is a error : %s \n",c);
}
void DeleteList(Seqlist *L,int i)
{
int j;
//如果当前顺序表的长度为0,则提示当前顺序表为空
if(L->length==0)
{
Error("this list is null");
}
//如果当前指定的位置小于1或大于表长,则提示其位置错误
else if(i<1||i>L->length)
{
Error("position error");
}
else
{
//否则,循环将位置i之后的原始顺序前移一位
for(j=i;j<=L->length-1;j++)
{
L->data[j-1]=L->data[j];
}
//表长减1
L->length--;
}
}
//打印表中所有元素
void PrintList(Seqlist *L)
{
int i;
//如果当前顺序表的长度为0,则提示当前顺序表为空
if(L->length==0)
{
Error("this list is null");
return;
}
else
{
for(i=0;i<L->length-1;i++)
{
printf("%d ",L->data[i]);
}
}
}
int main()
{
int i;
Seqlist *list;
list=(Seqlist*)malloc(sizeof(list));
for(i=1;i<ListSize;i++)
{
InsertList(list,i,i);
}
PrintList(list);
printf("the data element of seqlist is %d \n",list->length);
DeleteList(list,20);
printf("the data element of seqlist is %d \n",list->length);
free(list);//释放list所占用内存
}
分享到:
相关推荐
本主题聚焦于顺序链表(单链表)的C语言实现,包括正序创建、逆序创建、输出、删除、插入节点、求链表长度以及合并链表等操作。 1. **链表的基本概念**:链表由一系列节点组成,每个节点包含数据和指向下一个节点的...
本压缩包文件包含了关于C语言中数据结构实现的一些程序,具体涉及到了顺序链表、单链表和双链表以及栈的数据结构。下面我们将详细探讨这些知识点。 首先,我们来看顺序链表。顺序链表是一种线性数据结构,其元素在...
本资源"**C语言实现顺序表代码**"提供了一种用C语言编写的顺序表实现,这对于学习数据结构和算法的初学者来说是一份宝贵的参考资料。下面将详细讨论C语言实现顺序表涉及的知识点。 1. **数组**:在C语言中,数组是...
本文将详细讲解如何使用C语言在Microsoft Visual C++ 6.0环境下实现单向链表的创建、插入、删除节点以及两个链表的合并。 一、单向链表的基本概念 单向链表是一种线性数据结构,每个元素(称为节点)包含两部分:...
通过上述描述和代码片段,我们可以了解到,虽然C语言缺乏泛型数据结构的支持,但通过结构体和联合体,我们可以模拟出类似于泛型链表的数据结构,从而实现一种可以存储不同类型数据的异质链表。这种实现方式需要仔细...
本资源提供了纯C语言实现的通用链表类的源代码,这对于理解和实践数据结构与算法的学习者来说是非常有价值的。 链表的主要优点在于它的动态性,可以在运行时灵活地增加或删除元素,而无需预先知道其大小。这个通用...
本文将深入探讨如何使用C语言和双向链表来实现这款游戏。首先,我们要理解双向链表的基本概念。 双向链表是一种线性数据结构,与单链表不同,每个节点不仅包含数据,还包含两个指针,分别指向前后相邻的节点。这种...
根据给定的信息,本文将详细解释“数据结构中十字链表的C语言实现”这一主题。主要内容包括:十字链表的基本概念、十字链表在C语言中的实现方式、创建十字链表的过程、打印十字链表的方法以及两个十字链表相加的算法...
这个项目是学习数据结构和算法的好实例,它展示了如何用C语言实现一个基本的链表栈,并通过测试代码验证其实现的正确性。理解这种实现有助于加深对栈工作原理的理解,也有助于提升C语言编程能力。
本压缩包"**C语言顺序表_单链表_双链表代码.zip**"提供了C语言实现的三种基本数据结构——顺序表、单链表和双链表的源代码,这些代码适用于初学者学习和实践。以下将详细介绍这三种数据结构及其应用。 **1. 顺序表*...
【C语言链表详解】 C语言是编程领域中基础且重要的编程语言之一,它以其高效、灵活和贴近底层硬件的特点,被广泛应用于系统开发、软件工程等多个领域。在这个"链表"主题的C语言课件中,我们将会深入探讨链表这种...
链表实现(单向链表、顺序表、双向链表、循环链表)的相关代码
队列可以使用两种方式实现:顺序存储(数组)和链式存储(链表)。 2. 队列操作: - 初始化队列:创建一个空队列,对于链式队列,可以设置队头和队尾指针都为NULL。 - 入队:在队尾添加元素,链式队列中,只需...
在C语言中,由于没有内置的动态数组容器如C++中的`std::vector`,因此开发者需要手动实现类似的功能。`CList.zip`文件提供了一个...通过分析和实践这个代码,你可以深入了解链表的内部工作原理,提升C语言编程能力。
双向链表的API和C语言...另外还有线性表顺序存储、单链表、循环链表的C语言实现,文章及代码资源均已上传,可在专栏《数据结构与算法学习笔记》中查看,欢迎大家查看下载,如果内容有不合理的地方,欢迎大家批评指正。
这个"链表实验-C语言实现"的资源包含了关于链表操作的实践教程。 链表主要由节点(Node)组成,每个节点包含两部分:数据域(Data)和指针域(Pointer)。数据域用于存储实际的数据,而指针域指向下一个节点的地址...
在给定的代码中,`print` 函数实现了链表的遍历功能,它从头节点开始,依次打印每个节点的信息直到链表的末尾。 #### 3. 插入节点 插入节点是指在链表的指定位置添加一个新的节点。在给定的代码中,`insert` 函数...
3. **栈**:栈是一种后进先出(LIFO)的数据结构,C语言中可以通过数组或链表实现。常用的操作有push(压栈)、pop(出栈)和peek(查看栈顶元素)。 4. **队列**:队列是一种先进先出(FIFO)的数据结构,C语言中...
在这个"C语言数据结构线性表实验"中,我们将深入探讨两种实现线性表的方法:顺序表和链表。 1. **顺序表**: - **定义**:顺序表是将数据元素存储在一块连续的内存区域中,每个元素都有一个固定的索引位置。 - **...
在“C语言的基本程序 链表顺序表等”这个主题中,我们将深入探讨C语言的基础知识,特别是链表和顺序表这两种数据结构。 一、C语言基础 1. 变量与数据类型:C语言提供多种数据类型,如int、float、char等,用于存储...