第二章 线性表
- 格式:doc
- 大小:21.00 KB
- 文档页数:1
数据结构与算法华东师范大学计算机系杨沛第二章线性表2.1 线性表的基本概念线性表是具有相同数据类型的数据元素的有限序列。
由n(n≥0)个数据元素k0,k1,…,kn-1组成的线性表记为(k0 ,k1 ,…,kn-1),线性表中包含的数据元素的个数n称为线性表的长度(length),称长度为零的线性表为空的线性表(简称为空表)。
相关概念:表头、表尾、前驱、后继有序线性表:数据元素的相对位置与它们的值有联系。
无序线性表:数据元素的相对位置与它们的值没有联系。
第二章线性表例小于20的质数组成的线性表(2,3,5,7,11,13, 17,19);英文字母表也是线性表,表中每个字母是一个数据元素:(A,B,C,……,Z);2.2 顺序表2.2.1 线性表顺序表(sequential list)就是顺序存贮的线性表,即用一组连续的存贮单元依次、连续地存贮线性表中的结点。
如果每个结点占用s个存贮单元,并假设存放结点ki(0≤i≤n-1)的开始地址为loc(k0),则结点ki的地址loc(ki)可表示成Loc(ki) =loc(k0) + i*s。
2.2 顺序表在C 语言中,可用数组表示线性表:#define MAXN 100int list[MAXN];int n;线性表的结点k 0,k 1,…,k n-1依次存放在数组单元list[0],list[1],…,list[n-1]。
2.2.1 线性表最大表长实际表长线性表2.2 顺序表2.2.1 线性表假设s=sizeof(int),则可得到计算ki的地址的公式,因loc(ki)=&list[i],而&list[i]=&list[0]+i·s,故loc(ki)=&list[0]+i·s。
2.2 顺序表2.2.2 顺序表的操作(1)初始化:初始长度置为0即可(n=0;),数组空间在编译时分配。
(2)顺序表的插入:插入算法的C函数SqListInsert():若插入位置i不在可以插入的位置上,即i<0或i>n,则返回0;若n=MAXN,即线性表已满,此时数组list[]没有多余的存贮单元可以存放新结点,则返回-1;若插入成功,则返回12.2 顺序表实际表长(2)顺序表的插入:int SqListInsert(int list[],int*p_n,int i,int x) {int j;if(i<0||i>*p_n)return(0);//i不是合法的插入位置if(*p_len==MAXN)return(-1);//线性表已满2.2 顺序表for(j=*p_n;j>i;j--)list[j]=list[j-1];//结点右移list[i]=x;(*p_n)++;//表长加1return(1);}2.2 顺序表(2)顺序表的插入:对于存放在数组list[]中的、具有n个结点的顺序表,为了把值为x的结点插在表的位置i(0≤i≤n)上,可调用如下的语句:k=SqListInsert(list, &n, i, x);注:结点移动是本算法的关键操作2.2 顺序表(3)顺序表的删除:删除算法的C函数SqListDelete():在具有n个结点的顺序表中,删除第i(0≤i≤n-1)个位置上的结点,使线性表长度减1,若删除位置不合法,即i<0或i≥n,则返回0;若删除位置合法,即0≤i≤n-1,则删除成功,返回1。
第二章线性表
一、填空
1、带头结点的单链表head为空的判定条件是()。
2、如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间;而如果最常用的操作是删除第i个结点,则采用()存储方式最节省时间。
3、向一个长度为n的顺序表中的第i个元素(0≤i≤n-1)之前插入一个元素时,需向后移动()个元素。
4、在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需向前移动()个元素。
5、访问单链表中的结点,必须沿着()依次进行。
6、在双链表中,每个结点有两个指针域,一个指向(),另一个指向()。
7、在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=()和p->next=()的操作。
8、在一个单链表中的p所指结点之前插入一个s所指结点时,可执行如下操作:
(1)s->next=();
(2)p->next=s;
(3)t=p->data;
(4)p->data=();
(5)s->data=();
二、判断
1、链表的每个结点中都恰好包含一个指针。
()
2、链表的物理存储结构具有同链表一样的顺序。
()
3、链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
()
4、线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
()
5、顺序表结构适宜进行顺序存取,而链表适宜于进行随机存取。
()
6、顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
()
7、线性表在物理存储空间中也一定是连续的。
()
8、线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
()
9、顺序存储方式只能用于存储线性结构。
{ }
10、线性表的逻辑顺序于存储顺序总是一致的。
()。