下载此文档

单链表实验报告.docx


文档分类:IT计算机 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
单链表实验报告
计算机与信息技术学院综合性、设计性实验报告
专业:网络工程 年级/班级:大二 2016—2017学年第一学期
课程名称
数据结构
指导教师
李四
学号姓名
16 p;
int j;
p=L->next;
j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}
//单链表的按值查找
算法步骤:
用指针p指首元结点。
从首元结点开始依次顺着链域next向下查找,只要指向当前结点的指针p不为空,并且p所指结点的数据域不等于给定值e,则循环执行以下操作:p指向下一个结点。
返回p。若查找成功,p此时即为结点的地址值,若查找失败,p的值即为NULL。
int LocateElem_L(LinkList L,ElemType e)
{
LinkList p;
int j;
p=L->next;
j=1;
while(p&&p->data!=e)
{
p=p->next;
j++;
}
if(p) return j;
else return 0;
}
//单链表的插入
算法步骤:
查找结点ai-1并由指针p指向该结点。
生成一个新结点*s。
将新结点*s的数据域置为e。
将新结点*s的指针域指向结点ai。
将结点*p的指针域指向新结点*s。
Status ListInsert_L(LinkList &L,int i,ElemType e)
{
LinkList p=L,s;
int j=0;
while(p&&(j<i-1))
{
p=p->next;
++j;
}
if(!p||j>i-1)
{
return ERROR;
}
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
//单链表的删除
查找结点ai-1并由指针p指向该结点。
临时保存待删除结点ai的地址在q中,以备释放。
将结点*p的指针域指向ai的直接后继结点。
释放结点ai的空间。
Status ListDelete_L(LinkList &L,int i)
{
LinkList p=L,q;
int j=0;
while((p->next)&&(j<i-1))
{
p=p->next;
++j;
}
if((!p->next)||(j>i-1))
{
return ERROR;
}
q=p->next;
p->next=q->next;
delete q;
return OK;
}
//单链表的输出
算法步骤:
将指针p指向L的next域。
输出p指针的数据。
将指针p后移。
循环第2,3步,直到p指针为空(NULL)。
void ListPrint_L(LinkList L)
{
LinkList p;
p=L->next;
do
{
printf("%5d",p->data);
p=p->next;
}while(p);
}
void main()
{
int i,n,e;
LinkList L;
if(InitList_L(L));
printf("单链表创建成功!\n");
printf("请输入您要输入的数据个数n:\n");
scanf("%d",&n);
printf("请输入您要输入的数据:\n");
for(i=1;i<=n;i++)
{
scanf("%d",&e);
ListInsert_L(L,i,e);
}
printf("当前单链表的内容为:\n");
ListPrint_L(L);
printf("\n");
printf("请输入您要插入的数据e及其位置i,使用空格键隔开:\n");
scanf("%d %d",&e,&i);
if(ListInsert_L(L,i,e))
{
printf("当前单链表的内容为:\n");
ListPrint_L(L);
}
else
{
printf("i值越界!\n");
}
printf("\n");
printf

单链表实验报告 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人HShess
  • 文件大小3.10 MB
  • 时间2022-03-21