`
Cb123456
  • 浏览: 63744 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

线性表

阅读更多

 大笑以前写博客,为了增加关注度,现在呢?写给自己

 线性表是一种典型的线性结构,是最简单、最常用的数据结构,比如栈、队列都可以说是线性表.

 逻辑结构:

  由n个数据元素构成,对于非空的来说,有且只有一个开始结点,有且只有一个尾巴结点,内部结点有且只有一个直接前驱,和一个直接后驱。同一个线性表内部的数据元素的类型相同,每个元素的数据元素相同

 数据操作:

 初始化、计算表长、获取结点、查找结点、插入结点、删除结点

 存储:

 1.顺序存储:

 构造数据元素:

 

public class DATA {

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

 

 构造线性表:

 

/**
 * 主要用于定义顺序表结构
 * @author Administrator
 *
 */
public 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;
		}
		if(n<1||n>SL.ListLen-1){//插入结点序号不正确
			System.out.print("插入元素序号错误,不能插入元素!\n");
			return 0;
		}
		for(i=SL.ListLen;i>=n;i--){
			SL.ListData[i+1]=SL.ListData[i];
		}
		SL.ListData[n]=data;
		SL.ListLen++;
		return 1;
	}
	
	
	int SLAdd(SLType SL,DATA data){//增加元素到顺序表的尾部
		if(SL.ListLen>=MAXLEN){ //顺序表已经满了
		   System.out.println("顺序表已满,不能在加结点了");	
		   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.println("删除结点序号错误,不能删除成功!\n");
		    return 0;
		}
		for(i=n;i<SL.ListLen;i++){
			SL.ListData[i]=SL.ListData[i+1];
		}
		  SL.ListLen--;
		return 1;
	}
	
	DATA SLFindByNum(SLType SL,int n){
		if(n<1||n>SL.ListLen+1){
			System.out.println("结点序号错误,不能返回结点!\n");
		    return null;
		}
		return SL.ListData[n];
	}
	
	int SLFindByCount(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;
	}
	
	int SLALL(SLType SL){ //显示顺序表中的所有结点
		int i;
		for(i=1;i<=SL.ListLen;i++){
			System.out.print("{"+SL.ListData[i].key+","+
			SL.ListData[i].name+","+SL.ListData[i].age+"}");
			
		}
		return 0;
		
	}
	
}

 .....

 测试结果:

 

 以前老是看不懂,明明知道数据结构是基础,很重要的,今天突然就明白了,呵.
 

  • 大小: 39.4 KB
分享到:
评论

相关推荐

    数据结构实验报告-线性表-两个有序线性表的归并算法

    从键盘输入数据,建立两个有序线性表(每个线性表的输入数据按由小到大次序输入来建立线性表,不必考虑排序算法);输出建好的这两个有序线性表;将这两个有序线性表归并为一个有序线性表;输出归并后的有序线性表。 ...

    数据结构_线性表操作

    初始化线性表 *\n"; cout* 2.删除线性表中所有元素 *\n"; cout* 3.得到线性表的长度 *\n"; cout* 4.检查线性表是否为空 *\n"; cout* 5.得到线性表中指定序号元素 *\n"; cout* 6.遍历一个线性表 *\n"; cout* 7....

    线性表的操作,看看吧

    #define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量 #define LISTINCREMENT 1 //线性表存储空间分配增量 typedef int Status; //函数类型,其值为为函数结果状态代码 typedef int ElemType; //假设数据...

    2、 掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现

    2、 掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现。 3、 通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。 ...

    C语言线性表结构实验

    线性表结构实验 1.实验目的: (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握线性表的顺序存储结构的定义及C语言实现。 (3)掌握线性表在顺序存储结构即顺序表中的各种基本操作。 2.问题描述...

    数据结构_线性表的链式存储

    数据结构_线性表的链式存储 实验目的 1. 掌握线性表的链式存储结构。 2. 能熟练地利用链式存储结构实现线性表的基本操作。 3. 能熟练地掌握链式存储结构中算法的实现。 实验内容 1. 分别用头插法和尾插法建立带头...

    数据结构实验-线性表使用

    1、 创建线性表类。线性表的存储结构使用链表。 2、 提供操作:自表首插入元素、删除指定元素、搜索表中是否有指定元素、输出链表。 3、 接收键盘录入的一系列整数(例10,25,8,33,60)作为节点的元素值,创建链表。...

    数据结构实验报告1-线性表-两个有序表的归并-实验内容及要求.docx

    从键盘输入数据,建立两个有序线性表(每个线性表的输入数据按由小到大次序输入来建立线性表,不必考虑排序算法);输出建好的这两个有序线性表;将这两个有序线性表归并为一个有序线性表;输出归并后的有序线性表。 ...

    实验一终稿_基本操作_C++_线性表_

    根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。线性表存储结构(五选一):1、 带头结点的单链表2、 不带头结点的单链表3、 循环链表4、 双链表5、 静态链表线性表的...

    线性表 实验报告.docx

    试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a2...,an)逆置为(an,an-1,...,a1)。 选题9:(难)单链表拆分。 将带头结点的单链表LA中分拆成LB和LC两条单链表,LA中的data域...

    线性表的应用(数据结构-线性表)

    实验目的:掌握线性表的基本结构和操作方法,培养灵活使用表解决实际问题的能力。 实验内容: 一条记录有学号和成绩两个数据项,按成绩由大到小建立两个有序表(分别顺序表和链式表实现),并合并成一个有序表(有...

    将一个整数线性表拆分成奇数和偶数线性表

    将这个线性表拆分成一个奇数线性表和一个偶数线性表线,性表的最大长度为20.

    数据结构——线性表

    该文件包括各种线性表的头文件,另外还实现了简单单链表、简单顺序线性表、从A链表中删除B和C链表共有的元素、单链表逆置(以整数为例)、将链表中元素按递增排序并删除所选定范围内的元素、求一个新的集合A为A和B的...

    数据结构线性表实验源代码

    数据结构线性表实验源代码,绝对好用. #define list_init_size 100 #define listcrement 10 #include #include typedef struct { int *elem; int length; int listsize; }sqlist; //构造一个空的线性表 int ...

    数据结构实验报告1线性表的顺序存储结构.doc

    数据结构实验报告(1) 学院: 专业: 班级: "姓名 " "学号 " "实验组" " "实验时间 "2011-10-28 "指导教师" "成绩 " " "实验项目名称 "线性表的顺序存储结构 " "实 "1. 熟练掌握线性表的基本操作在顺序存储和链式...

    实现线性表的插入、删除、查找以及线性表合并等基本操作以及线性表合并等基本操作的程序

    1、选择顺序或链式存储结构实现线性表的基本操作 2、采用顺序或链式存储方式存储线性表,在此基础上实现线性表的各个操作,以及线性表的合并操作

    JAVA线性表JAVA线性表JAVA线性表

    JAVA线性表JAVA线性表JAVA线性表JAVA线性表

    线性表的顺序存储 线性表的顺序存储

    线性表的顺序存储,此程序主要实现线性表的顺序存储,有C++语言实现,还是比较轻易看得懂的!

    链表的C++实现(线性表的链式存储C++实现)

    使用C++类模板实现了线性表的链式存储结构(链表),类中包含了线性表的常用方法:向线性表中插入一个元素、删除一个元素、清空线性表、获取一个元素、获取线性表长度等。大致实现了STL中的链表的基本功能,通过对比...

Global site tag (gtag.js) - Google Analytics