首页 > 代码库 > 数据结构——线性表(第二章)

数据结构——线性表(第二章)

一、基本概念

1、线性表:简称表,是n(n>=0)个具有相同类型的数据元素的有限序列,线性表中数据元素的个数称为线性表的长度。长度为零时称为空表。

2、线性表的顺序存储结构称为顺序表。

3、单链表:单链表是一组任意的存储单元存放线性表的位置,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。


下面着重介绍有关单链表的操作:


#include<iostream>
using namespace std;

const int maxsize = 10;

 //  定义单链表的结点   
struct Node
{
	int data;
	struct Node *next;
};

//  linklist 类的声明 
class linklist
{
	public:
		linklist();					//	建立只有头结点的单链表 
		linklist(int a[],int n);	//  建立有N个元素的单链表 
		~linklist();				//  析构函数 
		void insert(int i,int x);	//  在单链表的第 i 个位置插入元素值为 x 的结点 
		int Delete(int  i);			//  在单链表中删除第 i 个结点 
		int locate(int x);			//  在单链表中 按值 查找 元素为x的元素 的位置(序号) 
		void printlist();			//  按序号依次输出各元素 
	private :
		Node *first;				//  单链表的头指针。 
};

linklist::linklist()
{
	first = new Node;				//   生成头结点 
	first ->next=NULL;				//   头结点指针域 置空 
}

linklist::linklist(int a[],int n)
{
	Node *r,*s;
	first = new Node;				//   生成头结点 
	r = first; 						//   尾指针 初始化 
	for(int i = 0;i<n;i++)
	{
		s=new Node;					
		s->data= http://www.mamicode.com/a[i];				//	 为每个元素建立一个结点 >
4、循环链表:在单链表中,如果将终端结点的指针域由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为循环单链表,简称循环链表。

5、双链表: 在循环链表中,虽然从任一结点出发可以扫描到其他结点,但要找到其他前驱结点,则需要遍历整个循环链表。如果希望快速确定表中任一结点的前驱结点,可以在单链表的每个结点中再设置一个指向其前驱结点的指针域,这样就形成了双链表。

6、静态链表:静态链表是用数组来表示单链表,用数组元素的下标来模拟单链表的指针。

7、间接寻址:是将数组和指针结合起来的一种方法,它将数组中存储数据元素的单元改为存储指向该元素的指针。