// ArrayList.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h" //#define MAXNUM 100 //顺序表中最大元素的个数
struct SeqList
{
int MAXNUM;
int n; //存放线性表中现有元素的个数,随着元素的增加个数是动态变化的
int * element ; //DateType element[];其实本质也是指针类型
};
typedef struct SeqList * PSeqList; // PSeqList是 SeqList的指针的类型
//创建空顺序表
PSeqList createNullList_seq(int m)
{
PSeqList palist=(PSeqList)malloc(sizeof(struct SeqList));
if(palist!=NULL)
{
palist->element=(int *)malloc(sizeof(int)*m);
if(palist->element)
{
palist->MAXNUM=m;//设置了MAXNUM
palist->n=0;
return (palist);
}
else
free(palist);
}
printf("Out of space!!\n");
return NULL;
}
//数据的输入
void input_SeqList(PSeqList palist)
{
int count=0;
for(int i=0;i<palist->MAXNUM;i++)
{
scanf("%d",&(palist->element[i]));
palist->n++;
if(palist->element[i]==0)
break;
}
}
//遍历
void traversal(PSeqList palist)
{
for(int i=0;i<palist->n;i++)
{
printf("%d\n",palist->element[i]);
}
}
//判断线性表是否为空 为空就返回1,否则返回0,为空就返回真
int isNullList_seq(PSeqList palist)
{
return (palist->n==0);
}
//查找某个元素在线性表中的位置
int locate_seq(PSeqList palist,int x)
{
int q;
for(q=0;q<palist->n;q++)
if(palist->element[q]==x)
return (q);
return (-1);
}
//如果插入数据标志是p 那么是在p-1和p之间插入一个数值,也是p-1之后插入一个数,也是从前往后数第P个数之后插入一个
int insertpre_seq(PSeqList palist,int p,int x)
{
//在第p个数之后插入元素x
int q;
if(palist->n >=palist->MAXNUM)
{
printf("Overflow!\n");
return (0);
}
if( isNullList_seq(palist) )
{
palist->element[0]=x;
//数据插入以后,一定要更新n的值
palist->n=1;
return (1);
}
if(p<0||p>palist->n)
{
printf("Not exist!\n");
return (0);
}
//特殊情况排除以后,考虑正常情况
for(q=palist->n-1;q>=p;q--)
palist->element[q+1]=palist->element[q];
palist->element[p]=x;
palist->n+=palist->n;
return (1);
}
//删除下标为p的元素
int deleteP_seq(PSeqList palist,int p)
{
if(p<0||p>palist->n-1)
{
printf("不存在这样的下标");
return (0);
}
for(int i=p;i<palist->n-1;i++)
palist->element[i]=palist->element[i+1];
palist->n-=palist->n;
return (1);
}
main()
{
PSeqList palist= createNullList_seq(100);
input_SeqList(palist);
traversal(palist);
system("pause");
}
分享到:
相关推荐
线性表的数组表示和实现 线性表的数组表示和实现
这篇博客“用数组实现线性表各种操作(C语言)完结”很可能是详细介绍了如何使用C语言中的数组来构建并操作线性表。 线性表的操作主要包括: 1. 初始化:创建一个空的线性表,通常是在数组中分配空间,并将其长度设...
数组对应元素相加的 C++ 程序设计 C++ 计算机软件基础知识点: 1. 数组的定义和初始化:在 C++ 中,数组是一种数据结构,可以存储多个相同类型的元素。数组的定义需要指定数组的名称和数组的大小。例如,在本实验...
在本项目中,"C语言课程设计线性表&数组学生成绩管理系统"是一个实践性的学习任务,旨在帮助学生深入理解和应用C语言编程知识,特别是关于线性表和数组的数据结构。下面将详细阐述相关知识点。 1. **C语言基础**: ...
线性表的数组实现,采用抽象数据型ADT的语法说明和语法格式说明进行实现,操作规范。
总的来说,C++中的线性表数组实现涉及到了动态内存分配、对象生命周期管理、数组操作以及基本数据结构的操作方法实现。这样的实现允许高效地访问和修改数组内的元素,但由于数组大小固定,插入和删除操作在表满或...
1.数据结构结构体数组的定义 2.线性表数组的应用(非普通数组) 3.实现建立,插入,查找,删除,打印的基本功能
本话题聚焦于使用动态数组来实现线性表,这是一种常见的数据结构实现方式,因为它既保留了数组的高效访问特性,又能灵活地调整大小以适应数据的变化。 动态数组,也称为可变长度数组,不同于固定大小的数组,它允许...
数组可以看作是一种推广的线性表,例如一维数组可以看作是一个线性表,二维数组可以看作是一个“数据元素是一维数组”的一维数组,三维数组可以看作“数据元素是二维数组”的一维数组,依此类推。 二、数组的定义 ...
用数组实现线性表,并完成各种操作,主要是插入查找、删除插入
在JavaScript中,我们可以通过多种方式来实现线性表,包括数组和链表。本压缩包包含的是JavaScript对线性表的四种基本实现:数组、单链表、单向循环链表和双向链表。下面我们将详细探讨这些数据结构及其实现。 1. *...
在这个实验代码中,我们关注的是使用C语言实现线性表,并采用数组作为底层存储机制。 线性表的基本操作包括: 1. 初始化:创建一个空的线性表,通常用一个空数组来表示。 2. 插入元素:在线性表的特定位置插入一个...
线性表的数组实现,也被称为顺序表,是将线性表的所有元素存储在一个固定大小的一维数组中。这种实现方式的优点在于访问元素速度快,因为数组的元素可以通过索引直接访问,时间复杂度为O(1)。然而,插入和删除元素时...
本实验指导书涵盖了数据结构的多个方面,包括图的连通性判断、最小生成树的求解、递归、排序算法、数组描述线性表、链式描述线性表、数组和矩阵、栈、队列、散列表、二叉树操作等。 一、图的连通性判断和最小生成树...
### 数组实现线性表的数据结构 在计算机科学中,数据结构是计算机存储、组织数据的方式,它使得数据能够高效地被访问和修改。本文主要介绍如何使用数组来实现线性表这一基本数据结构。 #### 线性表定义与特点 ...
本实例主要关注使用数组来实现线性表。数组实现的优势在于随机访问的高效性,但插入和删除操作可能会涉及大量的元素移动。 `CArray`类是一个模板类,意味着它可以处理任何类型的元素(通过`T`作为模板参数)。这个...
在Java中,我们通常通过两种方式来实现线性表:数组和链表。下面将详细讨论这两种实现方式及其操作。 一、数组实现线性表 1. **数组定义**:在Java中,数组是最基本的线性数据结构,可以存储同一类型的元素。通过...
在C语言中,线性表通常通过数组来实现,因为数组提供了连续的内存空间,便于进行随机访问。这篇博客"用数组实现线性表的各种操作(C语言)只完成一部分功能,明日继续"可能探讨了如何使用C语言创建和操作线性表,但...
数组、链表、堆栈和队列、线性表和顺序表 数组、链表、堆栈和队列是最基本的数据结构,任何程序都会涉及到其中的一种或多种。数据结构是指数据之间的相互关系,即组织形式,有逻辑结构和物理结构之分。逻辑结构有...