当前位置:首页 >> 数学 >>

实验3链表的实现和应用


陕西科技大学实验报告
班级 实验日期 学号 室温 姓名 实验组别 报告 日期 成绩

报告内容:(目的和要求、原理、步骤、数据、计算、小结等) 实验名称:链表的实现和应用 实验目的: 1. 掌握链表的概念。 2. 熟练掌握链表的链试存储结构。 3. 熟练掌握链表在链试存储结构上的运算。 4. 了解测试的思想。 实验环境:(硬/软件要求): Windows 2000,Visual C++ 6.0 实验原理: 链表是通过每个结点的指针域将线性表的 n 个结点按其逻辑顺序链接在一起。由于链表 的每个结点只有一个指针域,故将这种链表有又称为单联表。

链表的结点结构 ┌───┬───┐ │data │next │ └───┴───┘ data 域--存放结点值的数据域 next 域--存放结点的直接后继的地址(位置)的指针域(链域)

实验内容: 1. 编写算法,根据用户输入的字符数据用尾插法创建一个带头结点的单链表,“#”作为输 入数据的结束符。 测试数据共有 4 组,分别是:1)“#”;2)“a#”;3)“ab#”;4)“abcd#”。 2. 编写算法,实现在带有头结点的单链表中按序号查找的函数。 假设单链表中包含 6 个元素数据,测试数据是:1)查找第 0 个;2)查找第 1 个;3)查 找的 2 个;4)查找第 6 个;5)查找第 7 个。 实验要求: 1. 完成链表存储结构的类型设计。 2. 完成链表带头结点尾插法函数。 3. 完成按序号查找函数。


4. 编写主函数完成实验要求。 C 语言源程序 #include<stdio.h> #include<stdlib.h> typedef char datatype; typedef struct node { datatype data; struct node *next; } linklist; linklist *createlist() { char ch; linklist *head,*s,*r; head=(linklist*)malloc(sizeof(linklist)); r=head; printf("请输入字符产生链表,以#结束\n"); ch=getchar(); while(ch!='#') { s=(linklist*)malloc(sizeof(linklist)); s->data=ch; r->next=s; r=s; ch=getchar(); } r->next=NULL; return head; } linklist*get(linklist*head,int i) { int j; linklist*p; p=head;j=0; while((p->next!=NULL)&&(j<i)) {




p=p->next; j ++; } if(i==j)return p; else return NULL; } void main() { linklist*head,*r; int num; head=createlist(); printf("链表信息为:"); r=head->next; while(r) { printf("%c",r->data); r=r->next; } printf("\n"); printf("请输入要查询的序号:\n"); scanf("%d",&num); r=get(head,num); if(r==NULL) printf("没有查到\n"); printf("查找的结果为:%c\n",r->data); }







实验小结:链表是一种物理存储单元上非连续、 非顺序的存储结构, 数据元素的逻辑顺序是通过
链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在 运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点 地址的指针域


相关文章:
实验三、单链表的插入和删除
实验三单链表的插入和删除 - 实验三单链表的插入和删除 一、目的: 了解和掌握线性表的逻辑结构和链式存储结构, 掌握单链表的基本算法及相关的时间性 能分析...
数据结构实验三树与二叉树的操作实验指导
数据结构实验三二叉树的操作实验指导 - 实验六 树二叉树 6.1 实验目的: 实验目的: (1) 掌握二叉树链表的结构和二叉树的建立过程; (2) 掌握二叉树的...
作业3解答
作业3解答 - 堆栈、队列和字符串 作业 3 一、单项选择题 1.用单链表表示的链式队列的队头在链表的( )位置。(北方名校经典试题) A)链头 B)链尾 C)链中...
实验2 二叉树的应用2016版
实验2 二叉树的应用2016版 - 实验二 二叉树的应用 一、实验题目:二叉树的应用 二、实验目的: 1.掌握二叉树的二叉链表存储结构。 2.理解结构体和指针在二叉树...
华南理工 数据结构 第三次作业
(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误...图 来实现算法的。 参考答案:B 10. 用邻接表表示图进行深度优先遍历时,通常...
2013年12月份考试数据结构第三次作业
7. 为了实现逐层访问,算法中使用了一个 临时变量 ,以记忆正在访问的这一层和...、简答题 (共 10 题、总分 50 分) 1. 多重链表存储结构的特点。 (本...
第三章顺序表第四章链表题库
章顺序表第四章链表题库_公务员考试_资格考试/认证_教育专区。第章 ...(sal)等四项信息,请编写一完整的程序,实现以下功能: (1)创建信息表:从键盘...
数据结构课程设计--3 - 副本
7 2.3 实现两个一元多项式的乘法函数在完成用双链循环链表存储多项式的基础上,就可以在基于双链循环链表的存储结构上 进行一系列的数学运算,本节介绍两个多项式...
第三章 链表2
[ 3 * maxSize ]; for ( int i = 0; i <= top; i++ ) temp[i]...实现与~Queue ( ) 相同 //判队列空否 //队尾指针(在循环链表中) 队列的...
第二章 线性表作业
( 3.线性表采用链表存储时,结点和结点内部的存储...6. 以下程序的功能是实现带附加头结点的单链表数据...(A,B); 四、应用题 ; last=C; } free (last...
更多相关标签: