
| 实验名称 | 单链表的基本运算 | 实验序号 | 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"); | |||||||
