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