【数据结构复习】线性表

原创 2015年05月12日 11:21:27

感觉数据结构和算法很久没有学习过了,这么久的时间都在做功能性的东西,没有研究基础的数据结构和算法,有必要复习一下。

而且发现LeetCode都已经200+的题目了,感觉又可以没事水水题目了。

今天开始第一课数据结构的线性表:

线性表分为两种,一种是顺序结构存储的,一种是链式结构存储的。

两种表之间有明显的不同,前者是在连续的内存空间存储的数据结构,而后者可以在离散的内存空间。

个人觉得虽然两者都有好处,但是依然觉得链式表的优势明显。

下面是实现:

顺序存储

#include <stdio.h>
#include <string.h>
#define  MAXSIZE 10

typedef int ElemType;

typedef struct 
{
	ElemType data[MAXSIZE];
	int length;
}SqList;

// get the element at position
int GetElement(SqList L,  int pos )
{
	// check the list and the pos
	if (L.length == 0 || pos < 1 || pos > L.length)
	{
		printf("您的线性表为空或获取位置有误\n");
		return false;
	}
	return  L.data[pos - 1];
}

// insert the element at position
bool InsertElement(SqList L, int pos, ElemType elem)
{
	// check the list and the position
	if (L.length >= MAXSIZE || pos < 1 || pos > L.length + 1 )
	{
		printf("您的线性表已满或插入位置有误\n");
		return false;
	}

	if (pos < L.length)
	{
		for (int index = L.length - 1; index >= pos - 1; index --)
		{
			L.data[index + 1] = L.data[index];
		}
	}
	L.data[pos - 1] = elem;
	L.length++;

	return true;
}

// delete the element at position
bool DeleteElement(SqList L, int pos, int elem)
{
	// check the list and the position
	if (L.length == 0 || pos < 1 || pos > L.length)
	{
		printf("您的线性表为空或位置有误");
		return false;
	}
	elem = L.data[pos - 1] ;
	if (pos < L.length)
	{
		for (int index = pos; index < L.length ; index++)
		{
			L.data[index - 1] = L.data[index];
		}
	}
	L.length -- ;
	return true;
}

int test()
{
	// init the list
	SqList list;
	for (int index = 0; index < 10; index++)
	{
		list.data[index] = index;
	}
	list.length = 10;

	int i = GetElement(list, 2);
	printf("Get element from the list at position 2 is %d \n", i);
	InsertElement(list, 10, 99);
	printf("Insert element to the list at position 11 \n");
	int elem=0;
	DeleteElement(list, 2, elem);
	printf("Delete element from the list at position 2 is %d \n", elem);

	return 0;
}


数据结构线性表小结。(供自己复习)

听了许久的数据结构。小米老师上的课,还是依然如此魔性。 嘿嘿嘿。 从第二章,线性表开始总结。 第一,认识线性表。 数据元素 线性表:每个节点只有一个直接前趋和直接后继。 第二:线性表的逻辑...
  • qq_37561365
  • qq_37561365
  • 2017-03-14 17:03:21
  • 228

数据结构复习之路-线性表

一,线性表是数据结构中最基础的内容,但它却占据着及其重要的地位。因为在后序的很多数据结构的操作都是建立在熟练掌握线性表的操作基础之上的。下面就开始复习线性表的内容吧。 1.线性表的定义。 线性表是指按...
  • h_j_ya
  • h_j_ya
  • 2017-11-30 21:29:51
  • 59

数据结构复习指南

一、数据结构的章节结构及重点构成数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。对于绝大多数的学校而言,“外排,文件...
  • happen23
  • happen23
  • 2006-09-07 13:14:00
  • 1242

我的软考之路(三)——数据结构与算法(1)之线性

数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目,它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值,至...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2014-04-18 07:11:28
  • 9520

Java基础复习笔记04数据结构-线性表

  • 2011年05月08日 21:49
  • 250KB
  • 下载

数据结构--线性表详解(一)

这里写链接内容1、前言 线性表是最常用且是最简单的一种数据结构。形如:A1、A2、A3….An这样含有有限的数据序列,我们就称之为线性表。2、线性表的两种表示形式 顺序表示(其实就是数组) 链...
  • qq_35644234
  • qq_35644234
  • 2016-11-15 16:45:46
  • 5251

数据结构之线性表学习总结

鉴于自己的数据结构知识较为薄弱,并且自己常常学完没几天又忘了,每次用起来都要去查阅,所以现在开个博客来记录自己在学数据结构过程中自己的一些学习总结,也可以加深自己的理解。 第一篇要总结的是线...
  • quentinleehe
  • quentinleehe
  • 2015-06-08 23:44:33
  • 1442

数据结构-线性表操作

1、顺序存储列表 #include "stdio.h" #include //#include "stdlib.h" //#include "io.h" //#include "math...
  • xiaodeguang
  • xiaodeguang
  • 2016-09-05 17:14:50
  • 976

数据结构与算法复习笔记

算法分析 表栈和队列 1 抽象数据类型 2 表ADT 3栈 4 队列 树 1 二叉树 2 ADT查找树 3 AVL树 4 伸展树 5 树的遍历 5 B树 6 Set和Map 散列 优先队列堆 ...
  • u010521845
  • u010521845
  • 2017-03-11 10:26:38
  • 445

数据结构的一些复习点

数据结构知识点总结 概论 1:数据的结构直接影响算法的选择和效率。 2:数据->数据元素(元素,结点,记录)数据的基本单位->数据项(字段,域)数据不可分割的最小单位 3:数据类型:原...
  • woshimenghui
  • woshimenghui
  • 2016-06-28 15:41:36
  • 4016
收藏助手
不良信息举报
您举报文章:【数据结构复习】线性表
举报原因:
原因补充:

(最多只允许输入30个字)