数据结构单链表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程实验报告
实验名称单链表实验序号 2 实验日期
姓名院系班级学号
专业指导教师成绩
教师评语
一、实验目的和要求
(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。
三、实验预习内容
单链表的基本运算,包括:插入结点运算,删除结点运算,建立单链表,线形表基本运算实现。
三、实验结果与分析
#include
#include
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
void InitList(LinkList *&L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void CreateListR(LinkList *&L,ElemType a[],int n) {
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL; } void DispList(LinkList *L) { LinkList *p=L->next; while(p!=NULL) { printf("%c",p->data); p=p->next; } printf("\n"); } int ListLength(LinkList *L) { LinkList *p=L;int n=0; while(p->next!=NULL) { n++; p=p->next; } return(n); } int ListEmpty(LinkList *L) { return(L->next==NULL); } int ListInsert(LinkList *&L,int i,ElemType e) { int j=0; LinkList *p=L,*s; while(j { j++; p=p->next; } if(p==NULL) return 0; else { s=(LinkList *)malloc(sizeof(LinkList)); s->data=e; s->next=p->next; p->next=s; return 1; } } int LocateElem(LinkList *L,ElemType e) { LinkList *p=L->next; int i=1; while(p!=NULL&&p->data!=e) { p=p->next; i++; } if(p==NULL) return(0); else return(i); } int GetElem(LinkList *L,int i,ElemType &e) { int j=0; LinkList *p=L; while(j { j++; p=p->next; } if(p==NULL) return 0; else { e=p->data; return 1; } } int ListDelete(LinkList *&L,int i,ElemType &e) { int j=0; LinkList *p=L,*q; while(j { j++; p=p->next; } if(p==NULL) return 0; else { q=p->next; if(q==NULL) return 0; e=q->data; p->next=q->next; free(q); return 1; } } void DestroyList(LinkList *&L) { LinkList *p=L,*q=p->next; while(q!=NULL) { free(p); p=q; q=p->next; } free(p); } int main() { LinkList *h; ElemType e;