数据结构顺序表

发布 2019-09-12 02:47:00 阅读 6636

#define success 1

#define failure 0

#define maxsize 100

typedef int elemtype; /elemtype类型根据实际情况而定,这里假设为int*/

typedefstruct

elemtype data[maxsize]; 数组,存储数据元素*/

int last最后一个元素的位置*/

seqlist;

/*顺序表的初始化是指建立一个空表,即分配存储空间,但不包含任何数据元素。*/

int initlist(seqlist *l)

l = seqlist *)malloc(sizeof(seqlist));

if(l ==null)

return failure;

如果顺序表为满,last等于maxsize-1,返回1,否则返回0。

int listisfull(seqlist *l)

if(l->last ==maxsize – 1)

return failure;

附加操作是在顺序表未满的情况下,在表的末端添加一个新元素,然后使顺序表的last加1。

int appendlist(seqlist *l, elemtype item)

if(l->last ==maxsize - 1) /表已满*/

l->data[++l->last] =item;

return success;

插入。int insertlist(seqlist *l, elemtype item, int pos)

int i = 0;

if (l->last ==maxsize - 1) /顺序表已满*/

if (pos ==l->last + 2) /在表尾插入数据元素*/

*移动元素*/

for (i = l->last; i >=pos - 1; -i)

/*插入新的数据元素*/

l->data[pos - 1] =item;

/*表长增1*/

++l->last;

return success;

删除算法。elemtype deletelist(seqlist *l, int pos)

elemtype tmp;

int i = 0;

if (l->last ==1) /表为空*/

if (pos ==l->last + 1) /删除最后一个元素*/

/*表长减1*/

--l->last;

return tmp;

取表元。elemtype getelem(seqlist *l,int pos)

/*表为空或者位置不对*/

if ((l->last ==1) |pos < 1) |pos > l->last + 1))

return l->data[pos-1];

安值查找。int locatelist(seqlist *l, elemtype value)

int i = 0;

if(l->last ==1) /表为空*/

/*查找元素*/

for (i = 0; i <=l->last; +i)

*没有找到元素*/

if (i > l->last)

return i

例2-1】已知顺序表l,写一算法将其倒置。

顺序表倒置的算法实现。

void reverseseqlist(seqlist *l)

elemtype tmp;

int len = l->last + 1;

int i = 0;

for(i = 0; i < len / 2; +i)

例2-2】有数据类型为整型的顺序表la和lb,其数据元素均按从小到大的升序排列,编写一个算法将它们合并成一个表lc,要求lc中数据元素也按升序排列。

按升序合并两个表的算法实现。

seqlist *mergelist(seqlist *la, seqlist *lb)

int i = 0, j = 0, k = 0;

seqlist *lc;

initlist(lc);

if(!lc->data)

while((i <=la->last) &j <=lb->last合并 */

if(la->data[i] data[j])

else while(j <=lb->last若b表剩余也直接并归 */

return lc;

例2-3】已知一个存储整数的顺序表la,试构造顺序表lb,要求顺序表lb中只包含顺序表la中所有值不相同的数据元素。

seqlist * purgelist(seqlist *la)

seqlist *lb;

int i = 0;

int j = 0;

int count = 0;

int len = 0;

/*初始化b表*/

initlist(lb);

/*将a表中的第1个数据元素赋给b表*/

appendlist(lb, la->data[0]);

/*依次处理a表中剩余的数据元素*/

数据结构线性表

数据结构实验报告。实验名称 线性表。信息与通信学院,电子信息工程专业。作者 周裕娟 学号 0800220308 实验日期 2010年11月4日。一 实验目的。1 掌握线性表的顺序存储结构。2 掌握顺序表的基本运算并能灵活运用。3 掌握线性表的链式存储结构。4 掌握链表的基本运算并能灵活应用。二 实验...

数据结构第四版实验一 顺序表的基本操作

实验目的 1 掌握建立顺序表的基本方法。2 理解和掌握顺序表元素查找算法。3 掌握顺序表的插入算法的思想和实现。4 掌握顺序表的删除算法的思想和实现。实验内容 1 建立一个顺序表,要求从键盘输入10个整数,并将该顺序表的元素从屏幕显示出来。2 用函数实现在顺序表中查找其中一个元素,如果找到,返回该元...

数据结构作业 树

6.3 试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。6.12 对题6.3所得各种形态的二叉树,分别写出前序 中序和后序遍历的序列。6.19 分别画出和下列树对应的各个二叉树 a bcd 6.22 对于6.19题中给出的各树分别求出以下遍历序列 1 先跟遍历2 后跟遍历。6.26 假设...