《计算机软件基础》实验

《计算机软件基础》实验

ID:21675551

大小:54.00 KB

页数:9页

时间:2018-10-23

《计算机软件基础》实验_第1页
《计算机软件基础》实验_第2页
《计算机软件基础》实验_第3页
《计算机软件基础》实验_第4页
《计算机软件基础》实验_第5页
资源描述:

《《计算机软件基础》实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、《计算机软件基础》实验实验一线性表的插入与删除【实验目的】1.掌握线性表的基本运算.2.掌握顺序存储的概念,学会对顺序存储数据结构进行操作.3.加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力.4.掌握线性表的在链接存储下的插入和删除运算.【实验内容】1.初始化线性表2.建立线性表3.在线性表中插入指定值的元素4.在线性表中删除指定值的元素5.在线性表中删除指定位置的元素6.在线性表中查找指定元素7.输出线性表【参考程序】1.建立学生档案链表#defineLENsizeof(structstudent)/*sizeof()求字节数运算符*/structstud

2、ent{longnum;floatscore;structstudent*next;};intn;/*结点的个数*/structstudent*creat(){structstudent*head;/*结构体类型*/structstudent*p1,*p2;/*p1指向新结点,p2指向最后一个结点*/n=0;p1=p2=(structstudent*)malloc(LEN);/*分配一个结点的空间*/scanf(“%ld,%f”,&p1->num,&p1->score);/*输入第一个结点的值*/head=NULL;/*空链表*/while(p1->num!=0)/*若学

3、号=0,则建表结束*/{n=n+1;/*结点数*/if(n==1)head=p1;/*第一个结点*/elsep2->next=p1;/*链入下一个结点*/p2=p1;p1=(structstudent*)malloc(LEN);/*分配一个新结点的空间*/scanf(“%ld,%f”,&p1->num,&p1->score);/*输入这个结点的值*/}p2->next=NULL;return(head);/*返回链表的起始地址*/}2.输出链表voidprint(structstudent*head)/*输入链表的首地址*/{structstudent*p;printf(

4、"现在,存在%d个记录是:",n);p=head;/*p指向第一个结点*/if(head!=NULL)/*不是空链*/do{printf("%ld%5.1lf",p->num,p->score);/*输出结点的内容*/p=p->next;/*p指向下一个结点*/}while(p!=NULL);/*p为空指针时,循环结束*/}3.在单链表中插入指定值的结点structstudent{longnum;floatscore;structstudent*next;};structstudent*insert(structstudent*head,structstude

5、nt*stud){structstudent*p0,*p1,*p2;p1=head;/*p1指向表头*/p0=stud;/*p0指向要插入的结点*/if(head==NULL)/*如果是空表,则接到表头*/{head=p0;p0->next=NULL;}else{while((p0->num>p1->num)&&(p1->next!=NULL))/*找到了插入点或整个链表找完了,则循环结束*/{p2=p1;p1=p1->next;}/*p2指向刚才p1指向的结点,p1后移一个结点*/if(p0->num<=p1->num)/*如果找到了插入点,{if(head==p1)h

6、ead=p0;/*如果插入点是表头,则插到第一个结点之前*/elsep2->next=p0;/*否则插到插入点之后*/p0->next=p1;/*把插入的结点与链表相连*/}else{p1->next=p0;p0->next=NULL;/*接到表尾*/}}n=n+1;/*结点数加1*/returnhead;/*返回新链的首地址*/}4.删除单链表中指定值的结点structstudent{longnum;floatscore;structstudent*next;};structstudent*delete(structstudent*head,longnum){struc

7、tstudent*p1,*p2;if(head==NULL){printf(“该链表是空的!");gotoend;}p1=head;while(num!=p1->num&&p1->next!=NULL)/*p不是要找的结点,且后面还有结点*/{p2=p1;p1=p1->next;/*后移一个结点*/}if(num==p1->num)/*找到了!*/if(p1==head)head=p1->next;/*若p是头结点,则head指向第二个结点*/elsep2->next=p1->next;/*否则连下一个结点,被删结点断开了*/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。