数据结构之线性表
Posted hxf175336
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之线性表相关的知识,希望对你有一定的参考价值。
一、线性表的特性
1、线性结构的特性
(1)集合中必存在唯一的“第一元素”和唯一的“最后元素”。
(2)除最后一个元素之外,均有唯一的后继和唯一的前驱。
2、线性表的基本操作过程
(1)用 Setnull(L)置空表;
(2)用Length(L)求表的长度和表中各元素的个数;
(3)用Get(L,i)获取表中的第i个元素(1=<i<=n);
(4)用Prior(L,i)获取i的前驱元素;
(5)用Next(L,i)获取i的后继元素;
(6)用Locate(L,x)返回指定元素在表中的位置;
(7)用Insert(L,i,x)插入新元素;
(8)用Delete(L,x)删除已存在的元素;
(9)用Empty(L)来判断是否为空。
3、线性表的结构特点
均匀性、有序性。
二、顺序表操作
线性表的基本操作过程如下:
(1)计算顺序表的长度
public int GetLength() { return last + 1; //顺序表的长度就是数组最后一个元素的索引last加1 }
(2)清空操作
public void Clear() { return last = - 1;//清空所有元素,此时last=-1 }
(3)判断线性表是否为空
public bool IsEmpty() { if (last==-1) { return true; } else { return false; } }
(4)判断线性表是否为满
public bool IsFull() { if (last==maxsize-1) { return true; } else { return false; } }
(5)附加操作
public void Append(T item) { if (IsFull()) { Console.WriteLine("List is full");//在末尾加元素 } data[++last] = item; }
(6)插入操作
public void Insert(T item, int i) { //判断顺序表是否已满 if(IsFull()) { Console.WriteLine("List is full"); return; } //判断插入的位置是否正确, //i小于1表示在第1个位置之前插入 //i小于last+2表示在最后一个元素后面的第2个位置插入。 if (i<1||i>last+2) { Console.WriteLine("Position is error!"); return; } //在顺序表的表尾插入数据元素 if (i==last+2) { data[i - 1] = item; } else //在表的其他位置插入数据元素 { //元素移动 for (int j = last; j >= i - 1;--j) { data[j + 1] = data[j]; } //将新的数据元素插入到第i个位置上 data[i - 1] = item; } //修改表长 ++last; }
(7)删除操作
public T Delete(int i) { T tmp = default(T); //判断表是否为空 if (IsEmpty()) { Console.WriteLine("List is empty"); return tmp; } //判断删除的位置是否正确 //i小于1表示删除1个位置之前的元素 //i大于last+1表示删除最后一个元素后面的第1个位置的元素 if (i<1||i>last+1) { Console.WriteLine("Position is error!"); return tmp; } //删除的是最后一个元素 if (i==last+1) { tmp = data[last--]; return tmp; } else //删除的不是最后一个元素 { //元素移动 tmp = data[i - 1]; for (int j = i; j <= last;++j) { data[j] = data[j++]; } } //修改表长 --last; return tmp; }
(8)获取元素
public T GetElem(int i) { if (IsEmty()||(i<1) || (i>last + 1)) { Console.WriteLine("List is Empty or Position is error!"); return default(T); } return data[i - 1]; }
(9)按值查找
public int Locate(T value) { //顺序表为空 if (IsEmty()) { Console.WriteLine("List is Empty!"); return -1; } int i = 0; //循环处理顺序表 for (i = 0; i <= last;++i) { //顺序表中存在与给定值相等的元素 if (values.Equals(data[i]) { break; } } //顺序表中不存在与给定值相等的元素 if (i>last) { return -1; } return i; }
三、链表操作
四、实例演练
以上是关于数据结构之线性表的主要内容,如果未能解决你的问题,请参考以下文章