实验报告
- 格式:doc
- 大小:117.00 KB
- 文档页数:20
二、实验内容
编写实现单链表的基本算法(初始化、查找、插入、删除等)的函数,并在此基础上设计一个主程序完成如下功能:
⑴初始化单链表H;
⑵采用尾插法建立单链表H,如(a,b,c,d,c);
⑶输出单链表H的长度;
⑷输出单链表H的第i个元素,如输出单链表H的第3个元素;
ch=getchar();
}
//初始化链表
Lnode *establish_h(Lnode*p)
{
Lnode *q;int i;int t;
p=(Lnode*)malloc(sizeof(Lnode));
printf("请输入需要输入的元素个数\n");
scanf("%d",&t);
p->data=t;//头节点存储元素个数
⑴初始化顺序表L;
⑵建立顺序表L,如(a,b,c,d,c);
⑶输出顺序表L的长度;
⑷输出顺序表L的第i个元素,如第3个元素;
⑸输出给定元素的位置,如输出元素a的位置;
⑹在第i个元素前插入给定元素,如在第4个元素前插入元素f;
⑺删除顺序表L的第i个元素,如删除顺序表L的第3个元素。
注:最好编写输出顺序表L的函数供主程序调用,以检验⑵⑹⑺操作是否成功。
scanf("%d",&e);
insert_sq(&a,i,e);
out_list(a);
}break;
case 3:{
printf("\n请输入要删除元素位置(大于等于1,小于等于%d):",a.length);
scanf("%d",&i);
x=delete_sq(&a,i);
if(x!=-1)
printf("\n要删除的元素为%d",x);
printf("第%d个元素为%d",i,a);
}break;
case 5:
{
printf("请输入要删除元素位置\n");scanf("%d",&i);
Delet(p,i);
}break;
case 6:
{
display(p);
}break;
}
}while(w!=0);
printf("\n按回车键,返回...");
三、实验环境
VC++6.0
四、实验步骤(必须包括代码描述)
////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
int Locate(Lnode *p,int i);
Lnode *establish_h(Lnode *p);
void Delet(Lnode *p,int i);
int length(Lnode *p);
voiddisplay(Lnode *p);
void main()
{
char ch;
int l,w,b,i,a;
for(i=0;i<L->length;i++)
{
printf("数据%d",i);
scanf("%d",&(L->a[i]));
}
}
/*性表的函数*/
void out_list(Sqlist L)
{
int i;
for(i=0;i<=L.length-1;i++)
printf("%10d",L.a[i]);
else
{
for(j=L->length-1;j>=i-1;j--)
L->a[j+1]=L->a[j];
L->a[j-1]=e;
L->length++;
}
}
/*删除第i个元素,返回其值*/
ElemType delete_sq(Sqlist *L,int i)
{
ElemType x;int j;
if(L->length==0)
typedef int ElemType;
typedef struct
{
ElemType a[MAXSIZE];
int length;
}Sqlist;
Sqlist a,b,c;
/*调用函数的声明部分*/
void creat_list(Sqlist *L);
void out_list(Sqlist L);
else
printf("\n要删除的元素不存在!");
}break;
case 4:{
printf("\n请输入要查找的元素值");
scanf("%d",&e);
loc=locat_sq(a,e);
if(loc==-1)
printf("\n未找到指定的元素");
else
printf("\n已找到,元素位置为%d",loc);
⑸输出给定元素的位置,如输出元素a的位置;
⑹在第i个元素前插入给定元素,如在第4个元素前插入元素f;
⑺删除单链表H的第i个元素,如删除单链表H的第3个元素。
注:最好编写输出单链表H的函数供主程序调用,以检验⑵⑹⑺操作是否成功。
三、实验环境
VC++6.0
四、实验步骤(必须包括代码描述)
/////////////////////////////////////////////////////////////////////////
scanf("%d",&k);
switch(k)
{
case 1:{
creat_list(&a);
out_list(a);
}break;
case 2:{
printf("\n请输入插入位置(大于等于1,小于等于%d):",a.length+1);
scanf("%d",&i);
printf("\n请输入要插入的元素值");
p->next=NULL;
i=1;//第二个节点开始存储元素
while(i<=p->data)
{
q=(Lnode*)malloc(sizeof(Lnode));
printf("请输入数据\n");
scanf("%d",&t);
q->data=t;
q->next=p->next;
p->next=q;
i++;
void insert_sq(Sqlist *L,int i,ElemType e);
ElemType delete_sq(Sqlist *L,int i);
int locat_sq(Sqlist L,ElemType e);
/*主函数部分*/
void main()
{
int i,k,loc;ElemType e,x;char ch;
printf("空表!\n");
else
if(i<1||i>L->length)
{
printf("输入位置错!\n");
x=-1;
}
else
{
x=L->a[i-1];
for(j=i;j<=L->length-1;j++)
L->a[j-1]=L->a[j];
L->length--;
}
return(x);
int Locate(Lnode *p,int i)
{
Lnode *q;int j;
if(i<1||i>p->data)
西安财经学院信息学院
《算法与数据结构》实验报告
实验名称线性表实验室实验日期
顺序表的基本运算
一、实验目的
1.掌握线性表的顺序存储结构(顺序表)的含义与实现方法;
2.熟练掌握线性表在顺序存储结构上的插入、删除、查找等操作。
二、实验内容
编写实现顺序表的基本算法(初始化、查找、插入、删除等)的函数,并在此基础上设计一个主程序完成如下功能:
常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
线性表创建
插入
删除
查找
五、实验数据记录及分析(可包括错误提示,原因,如何解决等)
六、实验总结
单链表的基本运算
一、实验目的
1.掌握线性表的链式存储结构(单链表)的含义与实现方法;
printf("6.显示链表\n");
//选择操作数
scanf("%d",&w);
switch(w)
{
case 1:p=establish_h(p);break;
case 2:
{ l=length(p);
printf("链表长度为(除头节点外元素个数)%d\n",l);