【数据结构复习】线性表

原创 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;
}


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

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

线性表数据结构类型定义及相关操作总结

自己边看数据结构边总结出来,方便以后自己查看
  • lollipopwc001
  • lollipopwc001
  • 2016年09月08日 09:50
  • 1079

基于C/C++语言数据结构之线性表(一)

数据结构学习笔记: 数据结构的重要性:数据结构我感觉很重要,不仅仅是考试很重要,而且在以后程序员事业上都是尤为重要的,知乎上有网友评价数据结构是最重要的编程基本能力,没有之一。我感觉这个说法很对,并且...
  • qq_26816591
  • qq_26816591
  • 2016年10月14日 11:53
  • 5007

数据结构习题之线性表

第二章 线性表     一.  基本要求、重点、难点       本章主要介绍线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本算法。本章的重点是熟...
  • erlian1992
  • erlian1992
  • 2015年06月26日 16:27
  • 1606

数据结构与算法-线性表的定义与特点

1.线性表概念   线性表是由零个或者多个数据元素组成的有序的序列。 图示: 2.特点 2.1 有序 我们可以从上图看见,线性表里面的元素是一个挨着一个顺序排下去的,就像平常小朋友排...
  • raylee2007
  • raylee2007
  • 2015年07月28日 15:39
  • 1819

数据结构的一些复习点

数据结构知识点总结 概论 1:数据的结构直接影响算法的选择和效率。 2:数据->数据元素(元素,结点,记录)数据的基本单位->数据项(字段,域)数据不可分割的最小单位 3:数据类型:原...
  • woshimenghui
  • woshimenghui
  • 2016年06月28日 15:41
  • 3275

严蔚敏版《数据结构》第二章线性表的算法C语言实现

首先,今天是中秋,明天是国庆,在这说声节日快乐啊。 说点题外话,今天出去走了走,看到药店就进去称体重了。尼玛,竟然轻了4斤,本来就是100刚出头,现在倒好,直接掉下100了。我想这可能是因为最近天天...
  • ruralboy1
  • ruralboy1
  • 2012年09月30日 13:22
  • 6167

数据结构-线性表-顺序存储结构完整可执行代码

数据结构-线性表-顺序存储结构完整可执行代码(c语言描述)   #include "stdio.h" #define OK 1 #define ERROR 0 #define TRUE 1 #d...
  • hitwhylz
  • hitwhylz
  • 2013年10月05日 13:06
  • 4953

数据结构——线性表——知识点总结

自己看的书,对书上的内容进行总结。 线性表的定义:线性表是具有相同数据类型的n个数据元素的有限序列。n为表长,当n = 0时,为空表。 线性表的公式表示:L = (a1,a2,a3.........
  • misayaaaaa
  • misayaaaaa
  • 2017年05月12日 10:02
  • 912

《数据结构》实验二:线性表的实验(实验报告)

一.实验目的      巩固线性表的数据结构,学会线性表的应用。 1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。 2.学习运用线性表的知识来解决实际问题。 3.进一...
  • denise94
  • denise94
  • 2014年10月23日 20:49
  • 2296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【数据结构复习】线性表
举报原因:
原因补充:

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