- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 线性表的插入和删除
(1)实验题目:
编写一个程序,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)初始化单链表
(2)依次采用尾插法插入a,b,c,d,e元素
(3)输出单链表
(4)在第四个元素位置上插入f元素
(5)删除该单链表的第三个元素
(2)实验目的:
(1) 掌握单链表的基本运算:建立、插入和删除
(2) 掌握运用 C 语言上机调试单链表的基本方法。
(3)调试通过并正确执行给定功能要求的实验代码
#include stdafx.h
#includemalloc.h
#includeiostream.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((ji-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)
{coutp-data ;p=p-next;}
coutp-dataendl;
} //输出单链表
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输入用尾插法建立链表的字母:;
cinx;
r=rcreat(r,x);
j=j+1;}
print(head);
cout请输入要插入的元素的位置及元素:;
cinnum;ciny;
insert(head,num,y);
cout插入后的链表如下:endl;
print(head);
cout请输入要删除元素的位置:;
cinshanchu;
q=head;p=head-next;
while(ishanchu)
{
q=p;p=p-next;i=i+1;
}
q-next=p-next;delete (p);
cout删除后的链表如下:endl;
print(head);
}
(4)实验结果截图
原创力文档


文档评论(0)