视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据结构-实验2-单链表的基本运算
2025-09-24 10:57:35 责编:小OO
文档
《数据结构》课程实验报告

实验名称单链表的基本运算实验序号2实验日期2012-4-8
姓  名

曹志华院系计算机科学与信息工程学院

班  级

101041C1

学  号

1010411501
专  业

计算机科学与技术指导教师武伟

成 绩

教师评语
一、实验目的和要求

1.了解单链表基本运算的实现;

2.进一步掌握链表使用的步骤;

3.牢固掌握建立单链表算法,特别是尾插法建表算法,是很多其他复杂复杂的基础;

二、实验项目摘要

编写一个程序algo2-2.cpp.实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

1.初始化顺序表h;

2.依次采用尾插法插入a,b,c,d,e元素;

3.输出单链表h;

4.输出单链表h长度;

5.判断单链表h是否为空;

6.输出单链表h的第3个元素;

7.输出元素’a’ 的位置;

8.在第4个元素位置上插入“f”元素;

9.输出单链表h;

10.删除单链表h的第3个元素;

11.输出单链表h;

12.  释放单链表h。

三、实验预习内容

单链表基本运算的实现:单链表中,每一个结点有一个指针域指向直接后继。

●插入结点运算

●删除结点运算

●建立单链表

●线性表基本运算的实现

1.初始化线性表

2.求线性表的长度

3.判断该线性表是否为空

4.销毁线性表

5.求线性表中某个数据元素值

6.按元素查找

7.插入数据元素

8.删除数据元素

9.输出线性表

三、实验结果与分析

   1.  实验结果:

2.实验分析:

这次实验与上次的顺序表很相似,但相比之下,单链表比较难一些,通过这次实验我明白了什么是线性表的链式存储结构,在编写程序时出现了很多错误,但通过看书,查找资料慢慢改进,在改进中也学会了很多,比如了解了单链表基本运算算法的基本格式和构成。虽然有很多不足,但在今后的实验中我会慢慢改进。

3.源程序

 #include 

#include

//#define maxsize 1024

typedef char ElemType;

typedef struct node

{

 

 

}LinkList;

 

//初始化线性表

void InitList (LinkList *&h)

{

 

 

}

//求线性表的长度 

int ListLength(LinkList *h) 

{

 

 

 

 

     i++;

     p=p->next;

 

 

}

//求出线性表中第i个元素

int GetElem(LinkList *h,int i,ElemType &e) 

{

 

 

 

 

 

 

     p=p->next;

     j++;

 

 

 

}

//判断单链表是否为空

 int ListEmpty (LinkList *h)

 {

     return(h->next==NULL);

 }

 //输出元素的位置(按元素值查找) 

 int LocateElem(LinkList *h,ElemType e) 

 {

 

 

     

 

     p=p->next;

     i++;

 

 

 

 

 

 }

 

 //插入数据元素

 int ListInsert(LinkList *&h,int i,ElemType e) 

 {

     int j=0;

     LinkList *p=h,*s;

     while(j     {

      j++;

      p=p->next;

      

 

 

 

     return 0;

     else 

      {

       s=(LinkList *)malloc(sizeof(LinkList));

       s->data=e;

       s->next=p->next;

       p->next=s;

       return 1;

      }

 

 }

 //删除数据元素

 int ListDelete (LinkList *&h,int i,ElemType &e) 

 {

     int j=0;

     LinkList *p=h,*q ;

     while(j     {

 

 

 

 

 

 

 

     q=p->next;

     if(q==NULL) return 0;

     e=q->data;

     p->next=q->next;

     free(q);

     return 1;

 

 }

 //销毁线性表

 int DestroyList(LinkList *&h)

 {

     LinkList *p=h,*q=p->next;

     while(q!=NULL)

     {

      free(p);

      p=q;

      q=p->next;

 } 

 free(p);

 }

 

//输出线性表

int DispList (LinkList *h)

{

 

 

 

     printf("%c",p->data);

     p=p->next;

 

 

//主函数 

void main()

{

 

 

 

 初始化单链表h 

 初始化顺序表\\n");

 

 

 采用尾插法插入a,b,c,d,e元素\\n") ;

 插入元素 

 

 

 

 

     printf("\\n");

 输出单链表h:"); 

 

 

 

 长度:%d\\n",ListLength(h));

 

 单链表h为%s\\n",(ListEmpty(h)?"空":"非空"));

 

 

 单链表h的第3个元素是%c\\n",e);

 

 元素a的位置是第%d个元素\\n",LocateElem(h,'a'));

 

 在第4个元素位置上插入f元素\\n");

 

 

 输出单链表h:");

 

 

 删除h的第3个元素\\n");

 

 

 输出单链表h:");

 

 

 释放单链表h\\n");

 

 

 

注:空间不够,可以增加页码。下载本文
显示全文
专题