线性表的实现与操作二Word格式.docx

上传人:b****3 文档编号:14337861 上传时间:2022-10-22 格式:DOCX 页数:11 大小:21.15KB
下载 相关 举报
线性表的实现与操作二Word格式.docx_第1页
第1页 / 共11页
线性表的实现与操作二Word格式.docx_第2页
第2页 / 共11页
线性表的实现与操作二Word格式.docx_第3页
第3页 / 共11页
线性表的实现与操作二Word格式.docx_第4页
第4页 / 共11页
线性表的实现与操作二Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

线性表的实现与操作二Word格式.docx

《线性表的实现与操作二Word格式.docx》由会员分享,可在线阅读,更多相关《线性表的实现与操作二Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

线性表的实现与操作二Word格式.docx

这四份基础性的实验为改错性质,将每个实验题目中的错误改正过来并通过调试,有助于对基础知识的理解与强化记忆。

(2)概要设计:

实验一为对顺序线性表实现插入,删除,查找等基本操作。

需要用到的语句包括voidListInitiate(SeqList*L)

intListInsert(SeqList*L,inti,DataTypex)

intListDelete(SeqList*L,inti,DataType*x)

intListGet(SeqListL,inti,DataType*x)等。

实验二是对单链表进行建立,插入,删除等基本操作。

需要的语句为voidListInitiate(SeqList*L)

实验四为二叉树,要求建立一个二叉树,并实现前序,中序及后序的遍历。

所需语句包括voidListInitiate(SeqList*L)

实验六的容是图的遍历包括邻接矩阵和邻接链表两种方法。

三、程序代码

(更正后的代码)

#include<

stdio.h>

#defineMaxSize100

typedefintDataType;

typedefstruct

{

DataTypelist[MaxSize];

intsize;

}SeqList;

voidListInitiate(SeqList*L)/*初始化顺序表L*/

L->

size=0;

/*定义初始数据元素个数*/

}

intListLength(SeqListL)/*返回顺序表L的当前数据元素个数*/

returnL.size;

intListInsert(SeqList*L,inti,DataTypex)

/*在顺序表L的位置i(0≤i≤size)前插入数据元素值x*/

/*插入成功返回1,插入失败返回0*/

intj;

if(L->

size>

=MaxSize)

{

printf("

顺序表已满无法插入!

\n"

);

return0;

}

elseif(i<

0||i>

L->

size)

参数i不合法!

else

{

for(j=L->

size;

j>

i;

j--)L->

list[j]=L->

list[j];

/*为插入做准备*/

list[i]=x;

/*插入*/

size++;

/*元素个数加1*/

return1;

intListDelete(SeqList*L,inti,DataType*x)

/*删除顺序表L中位置i(0≤i≤size-1)的数据元素值并存放到参数x中*/

/*删除成功返回1,删除失败返回0*/

size<

=0)

顺序表已空无数据元素可删!

size-1)

参数i不合法"

{//此段程序有一处错误

*x=L->

list[i];

/*保存删除的元素到参数x中*/

for(j=i+1;

j<

=L->

size-1;

j++)L->

list[j-1];

/*依次前移*/

size--;

/*数据元素个数减1*/

intListGet(SeqListL,inti,DataType*x)

/*取顺序表L中第i个数据元素的值存于x中,成功则返回1,失败返回0*/

if(i<

L.size-1)

*x=L.list[i];

voidmain(void)

{SeqListmyList;

inti,x;

ListInitiate(&

myList);

for(i=0;

i<

10;

i++)

ListInsert(&

myList,i,i+1);

ListDelete(&

myList,4,&

x);

ListLength(myList);

i++)

ListGet(myList,i,&

//此段程序有一处错误

printf("

%d"

x);

}

测试结果:

线性表的实现及操作

(二)

了解和掌握线性表的链式存储结构;

假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用单链表。

程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求同学们修改错误的代码,上机调试并得到正确的运行结果。

三、程序代码:

(更正后的结果)

/*该文件包含pringtf()等函数*/

stdlib.h>

/*该文件包含exit()等函数*/

malloc.h>

/*该文件包含malloc()等函数*/

/*定义DataType为int*/

typedefstructNode

DataTypedata;

structNode*next;

}SLNode;

voidListInitiate(SLNode**head)/*初始化*/

/*如果有存空间,申请头结点空间并使头指针head指向头结点*/

if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit

(1);

(*head)->

next=NULL;

/*置链尾标记NULL*/

intListLength(SLNode*head)

SLNode*p=head;

/*p指向首元结点*/

intsize=0;

/*size初始为0*/

while(p->

next!

=NULL)/*循环计数*/

p=p->

next;

size++;

returnsize;

intListInsert(SLNode*head,inti,DataTypex)

/*在带头结点的单链表head的数据元素ai(0≤i≤size)结点前*/

/*插入一个存放数据元素x的结点*/

SLNode*p,*q;

p=head;

j=-1;

/*j初始为-1*/

=NULL&

&

i-1)

/*最终让指针p指向数据元素ai-1结点*/

j++;

if(j!

=i-1)

插入位置参数错!

"

/*生成新结点由指针q指示*/

if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit

(1);

q->

data=x;

//此段程序有一处错误

p->

next=q->

/*给指针q->

next赋值*/

next=q;

/*给指针p->

next重新赋值*/

return1;

intListDelete(SLNode*head,inti,DataType*x)

/*删除带头结点的单链表head的数据元素ai(0≤i≤size-1)结点*/

/*删除结点的数据元素域值由x带回。

删除成功时返回1;

失败返回0*/

SLNode*p,*s;

next->

next!

j++;

s=p->

/*指针s指向数据元素ai结点*/

*x=s->

data;

/*把指针s所指结点的数据元素域值赋予x*/

p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1