线性表结构

定义:按照一定的逻辑顺序依次存放在计算机的这一组连续的存储单元。

以数组的方式存放数据,其中在插入或者删除节点元素是需要判断该节点的位置。

class DATA
{
String key; //结点的关键字
String name;
int age;
}

class SLType //定义顺序表结构
{
static final int MAXLEN=100;
DATA[] ListData=new DATA[MAXLEN+1]; //保存顺序表的结构数组
int ListLen; //顺序表已存结点的数量

void SLInit(SLType SL) //初始化顺序表
{
SL.ListLen=0; //初始化为空表
}

int SLLength(SLType SL)
{
return (SL.ListLen); //返回顺序表的元素数量
}

int SLInsert(SLType SL,int n,DATA data)
{
int i;
if(SL.ListLen>=MAXLEN) //顺序表结点数量已超过最大数量
{
System.out.print("顺序表已满,不能插入结点!\n");
return 0; //返回0表示插入不成功
}
if(n<1 || n>SL.ListLen-1) //插入结点序号不正确
{
System.out.print("插入元素序号错误,不能插入元素!\n");
return 0; //返回0,表示插入不成功
}
for(i=SL.ListLen;i>=n;i--) //将顺序表中的数据向后移动
{
SL.ListData[i+1]=SL.ListData[i];
}
SL.ListData[n]=data; //插入结点
SL.ListLen++; //顺序表结点数量增加1
return 1; //成功插入,返回1
}

int SLAdd(SLType SL,DATA data) //增加元素到顺序表尾部
{
if(SL.ListLen>=MAXLEN) //顺序表已满
{
System.out.print("顺序表已满,不能再添加结点了!\n");
return 0;
}
SL.ListData[++SL.ListLen]=data;
return 1;
}

int SLDelete(SLType SL,int n) //删除顺序表中的数据元素
{
int i;
if(n<1 || n>SL.ListLen+1) //删除结点序号不正确
{
System.out.print("删除结点序号错误,不能删除结点!\n");
return 0; //删除不成功,返回0
}
for(i=n;i<SL.ListLen;i++) //将顺序表中的数据向前移动
{
SL.ListData[i]=SL.ListData[i+1];
}
SL.ListLen--; //顺序表元素数量减1
return 1; //成功删除,返回1
}

DATA SLFindByNum(SLType SL,int n) //根据序号返回数据元素
{
if(n<1 || n>SL.ListLen+1) //元素序号不正确
{
System.out.print("结点序号错误,不能返回结点!\n");
return null; //不成功,则返回0
}
return SL.ListData[n];
}

int SLFindByCont(SLType SL,String key) //按关键字查询结点
{
int i;
for(i=1;i<=SL.ListLen;i++)
{
if(SL.ListData[i].key.compareTo(key)==0) //如果找到所需结点
{
return i; //返回结点序号
}
}
return 0; //搜索整个表后仍没有找到,则返回0
}

int SLAll(SLType SL) //显示顺序表中的所有结点
{
int i;
for(i=1;i<=SL.ListLen;i++)
{
System.out.printf("(%s,%s,%d)\n",SL.ListData[i].key,SL.ListData[i].name,SL.ListData[i].age);
}
return 0;
}
}

时间: 2024-07-31 23:33:50

线性表结构的相关文章

(一)线性表结构1数组实现

(一)数组实现线性表 1.定义集合(结构体实现) 1 #define MAX 10 2 typedef struct { 3 int DATA[MAX]; 4 int last; 5 }LIST; DATA数组用于存放整型数据,last表示最后元素的下标 2.定义各类操作 a.创建空表 LIST *MakeEmpty() { LIST *PtrL; PtrL = (LIST *)malloc(sizeof(LIST)); PtrL->last = -1; return PtrL; } b.插入数

线性表结构的Java实现

一.线性表的抽象数据类型表述 线性表的结构简单,长度允许动态增长或搜索:可以对线性表中的任何数据元素进行访问和查找:允许进行数据的插入和删除操作:求线性表中的指定数据的前驱和后继:合并线性表以及拆分线性表中. Java JDK中有ArrayList和LinkedList两个类很好的实现了顺序存储和链式存储.因此学习数据结构的最好方式是去研究JDK源码. 这里的代码个人作为练习,为了便于理解,很多地方处理的并非十分严谨,仅供参考.转载注明出处,技术讨论 email: <[email protect

java实现的链式线性表结构

package com.hephec.ds; public class LinkedList<T> { //定义一个内部类节点Node Node实例代表链表的节点 class Node{ //保存节点的数据 private T data; //保存下一个节点的引用 private Node next; //无参的构造方法 public Node(){ } //有参的构造方法 public Node(T data,Node next){ this.data=data; this.next=nex

线性表的顺序存储结构和链式存储结构

前言 上一篇<栈>中提到了栈的顺序存储结构和链式存储结构,现在就对此做个简单的比较.因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式.而栈和队列都是两种重要的线性表结构.所以本文标题直接为线性表的顺序存储结构和链式存储结构. 开始比较两种不同的存储方式 一.顺序存储结构(也可称为顺序表) 顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配. 优点: (1)方法简单,各种高级语言中都有数组,容易实现. (2)不用为表示节点间的逻辑

【线性表2】线性表的顺序实现:顺序表

顺序表简介 特点:使用一组地址连续的存储单元依次存储表中的数据元素,常见的就是使用数组去实现. 表中逻辑相邻的数据元素,在物理内存上也相邻. 顺序表中的任意数据元素都可随机访问,是一种支持随机访问,长度自动动态调整的线性表结构. 优点:访问表中的元素很快,时间复杂度为O(1) 缺点:插入,删除元素需要移动大量的元素,时间复杂度为O(n) . 因此如果我们在编程中需要这样一种线性表数据结构:构造后对元素的访问操作很频繁,而很少进行增,删等元素位置的调整操作,那么就可以考虑使用顺序表. 代码实现 #

数据结构_线性表的顺序表示和链式表示

/********************************************************************************************************************/ 声明: (1)*.h文件是代码声明, *.cpp文件是代码实现; (2)一般头文件的内容有: ①类型声明; ②函数声明; ③枚举; ④常量; ⑤宏 (3)以下说明是为了方便代码文件的管理而设定的一些规则, 以后代码都会按照此规则编写: 1)Pubuse.h 是几

二 线性表

一. 线性表的几种形式: 1.线性表是最常用且最简单的一种数据结构. 线性表中元素的个数n定义为线程表的长度,n= 0时称为空表. 2. 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素. 这种顺序存储结构的线性表为顺序表. 线性表的特点: 优点是:可以随机存取的存储结构 缺点是:插入和删除时间复杂度高,主要耗费在移动元素上. 时间复杂度O(n).      数组 3.线性表的链式表示和实现  [字典,集合] 链式表是一组任意的存储单元存储线性表的数据元素(这组存储单元可以

线性表操作

#include<iostream>      //c++头文件 using namespace std;   #define LIST_INIT_SIZE 20     //预定义常量 #define LISTINCREMENT 5 #define OK 1 #define ERROR 0 typedef int ElemType;              //定义类型 typedef int Status; typedef struct                        //

数据结构之线性表的实现

线性表的定义 在生活中其实处处可见线性表的例子.比如一个班级的小朋友,一个跟着一个排着队,有一个打头,有一个收尾,当中的小朋友 每一个都知道他前面一个是谁,他后面一个是谁,这样如同有一根线把他们串联起来 了. 就可以称之为线性表. 所以线性表的定义为:零个或多个数据元素的有限序列. 首先它是一个序列. 也就是说,元素之间是有顺序的,若元素存在多个,则第一 个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继. 然后,线性表强调是有限的,小朋友班级人数是有限的,元素个数当然也是有