单链表的各种基本运算的实现实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件技术基础实验一
-----单链表的各种基本运算的实现班级:电信0901
学号:**********
姓名:***
实验一线性表的插入和删除
(1)实验题目:
编写一个程序,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)初始化单链表
(2)依次采用尾插法插入a,b,c,d,e元素
(3)输出单链表
(4)在第四个元素位置上插入f元素
(5)删除该单链表的第三个元素
(2)实验目的:
(1) 掌握单链表的基本运算:建立、插入和删除
(2) 掌握运用C 语言上机调试单链表的基本方法。

(3)调试通过并正确执行给定功能要求的实验代码
#include "stdafx.h"
#include<malloc.h>
#include<iostream.h>
struct link
{char data;
link *next;
}; //结点定义
link *rcreat(link *head,char x)
{link *s,*r;
r=head;
s=new link;
s->data=x;r->next=s;r=s;
r->next=NULL;return r;
} //用尾插法建立单链表
link *locate(link *head,char x)
{link *p;
p=head->next;
while((p!=NULL)&&(p->data!=x))
p=p->next;
return p;
} //查找元素x的地址
link *get(link *head,int i)
{int j;link *p;
j=1;p=head->next ;
while((j<i-1)&&(p!=NULL))
{j++;
p=p->next;
}
return p;
} //查找第i个元素的地址
void insert(link *head,int num,char y)
{link *p,*s;
s=new link;s->data=y;
if(head->next==NULL)
{head->next=s;s->next=NULL;}
p=get(head,num);
if(p==NULL) cout<<"插入位置非法";
else
{s->next=p->next;p->next=s;}
} //元素y之后插入元素x
void delet(link *head,char x)
{link * p, * q;
q=head;p=head->next;
while((p!=NULL)&&(p->data!=x))
{q=p;p=p->next;}
if(p==NULL) cout<<"要删除的元素不存在";
else
{q->next=p->next;delete(p);}
} //元素x删除
void print(link *head)
{link *p;
p=head->next;
while(p->next!=NULL)
{cout<<p->data<<" ";p=p->next;}
cout<<p->data<<endl;
} //输出单链表
void main(int argc, char* argv[]) //主函数
{
link *head,*p,*q,*r;char x,y;int num,shanchu,i=1,j=1;
head=new link;
head->next=NULL;
r=head;
while(j<=5)
{cout<<"输入用尾插法建立链表的字母:";
cin>>x;
r=rcreat(r,x);
j=j+1;}
print(head);
cout<<"请输入要插入的元素的位置及元素:";
cin>>num;cin>>y;
insert(head,num,y);
cout<<"插入后的链表如下:"<<endl;
print(head);
cout<<"请输入要删除元素的位置:";
cin>>shanchu;
q=head;p=head->next;
while(i<shanchu)
{
q=p;p=p->next;i=i+1;
}
q->next=p->next;delete (p);
cout<<"删除后的链表如下:"<<endl;
print(head);
}
(4)实验结果截图。

相关文档
最新文档