实验一、线性表的操作_第1页
实验一、线性表的操作_第2页
实验一、线性表的操作_第3页
实验一、线性表的操作_第4页
实验一、线性表的操作_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 线性表的操作一、 实验目的1 掌握顺序表的基本操作:包括顺序表的插入、删除和查找等运算。2 掌握单链表的基本操作:包括单链表的建立、插入、删除和查找。二、 实验内容1 一个顺序表的第一个元素的存储地址是90,每个元素的长度是2,则第六个元素的存储地址是( )。2 表长为n的顺序表中,若在第i(1in+1)个数据元素之前插入一个数据元素,需要向后移动( )个数据元素;删除第i(1in)个数据元素需要向前移动( )个数据元素;在等概率的情况下,插入一个数据元素平均需要移动( )个数据元素;在等概率的情况下,删除一个数据元素平均需要移动( )个数据元素。3 顺序表基本操作的实现。将顺序表的插

2、入和删除操作的实现函数补全完整,同时完成inverse函数,用以实现顺序表的就地逆置,调试和验证程序。#include<stdio.h>#include <math.h>#include <stdlib.h>#define list_init_size 100#define listincreament 10typedef int elemtype;typedef struct elemtype *elem; int length; int listsize; sqlist;bool initlist_sq(sqlist& l) l.elem=(el

3、emtype * )malloc(list_init_size*sizeof(elemtype); if (! l.elem) printf("overflow!"); return false; l.length=0; l.listsize= list_init_size; return true; bool listinsert_sq(sqlist &l, int i, elemtype e) elemtype *p,*q; if (i < 1 | i > l.length+1) printf("插入位置不正确!"); retur

4、n false; if (l.length >= l.listsize) elemtype* newbase=(elemtype*)realloc(l.elem,(list_init_size+listincreament)*sizeof(elemtype); if(!newbase) printf("overflow!"); return false; l. elem=newbase; l.listsize+=listincreament; /*将第i到第n个元素向后移动一位,将e插入到第i个元素的位置,表长增1*/ return true;bool listdel

5、ete_sq(sqlist &l, int i, elemtype &e) elemtype *p,*q;if (i < 1) | (i > l.length) printf("删除位置不正确!"); return false; /* 将第i个元素的值给e,将第i+1到第n个元素向前移动一位,表长减1*/ return true;void display_sq(sqlist l) for (int i=1; i<=l.length;i+) printf("%d ",l.elemi-1); printf("n&q

6、uot;); /*编写一个算法实现顺序表的就地置逆。例如:顺序表(2,45,7,89,45,34),逆置后为(34,45,89,7,45,2)。要求不重新开辟顺序表空间。*/void inverse(sqlist &l)int main()sqlist sq;elemtype e;if(!initlist_sq(sq)exit(0);for(int i=1;i<=10;i+)printf("请输入要插入的元素:");scanf("%d",&e);listinsert_sq(sq,i,e); printf("逆置前的元素序列

7、为:");display_sq(sq); inverse(sq); printf("逆置后的元素序列为:");display_sq(sq);doprintf("请输入要删除的元素的位置:");scanf("%d",&i);while(!listdelete_sq(sq,i,e);printf("删除的元素为:%dn",e); printf("删除后的元素序列为:");display_sq(sq);return 0;4、单链表的操作。补全创建单链表的算法,同时写一算法将单链表中值

8、重复的结点删除,使所得的结果链表中所有结点的值均不相同,调试并验证程序。#include <stdio.h>#include <stdlib.h>typedef int elemtype;typedef struct node elemtype data; struct node *next;lnode,*linklist;/输入n个数据的值,建立带头结点的单链表lvoid createlist( linklist &l, int n ) void display(linklist l)lnode *p;p=l->next;while(p)printf("%d ",p->data);p=p->next;printf("n");/*写一算法将单链表中值重复的结点删除,使所得的结果链表中所有结点的值均不相同。*/void deletelist(linklist &l)int main()linklist l;int n;printf("请输入要创建的单链表中的结点数:");scanf("%d",&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论