实验一线性表的应用—顺序表操作
一、目的和要求
1.熟悉并掌握线性表的逻辑结构定义、特点。
2.熟悉并掌握顺序表描述方法。
3.熟悉并掌握顺序表的基本操作,包括顺序表的建立与打印,插入与删除数据元素,查找数据元素等。
二、实验内容
(详细说明顺序表操作的各个函数头的说明)
三、实验环境
1.硬件:PC机。
2.软件:DOS 、Windows9.x 、Window2000或以上版本,TurboC 2.0 及以上版本或VC6.0。
四、源程序
#define N 100
#include
#include
typedef struct a
{
float score[N];
int length;
}SeqList;
//创建顺序表函数
void CreatSList(SeqList *p)
{
int n,i;
scanf("%d",&n);
if(n<0||n>=N)
printf("表长输入错误\n");
else
{
for(i=0;iscore[i]);
}
p->length=n;
}
}
//输出顺序表函数
void PrintSList(SeqList *p)
{
int i;
if(p->length>0)
{
printf("该顺序表为:\n");
for(i=0;ilength;i++)
printf("%.5f\n",p->score[i]);
}
//在顺序表中插入元素函数
void InsertSList(SeqList *p , int i, float x) {
int j;
if(p->length==N)
{
printf("表满\n");
}
if(i<0||i>p->length+1)
{
printf("插入位置错误\n");
}
else
for(j=p->length;j>=i;j--)
p->score[j]=p->score[j-1];
p->score[i-1]=x;
p->length++;
PrintSList(p);
//在顺序表中删除元素函数
void DeleteSList(SeqList *p)
{
int i,j;
printf("输入所要删除元素的位置");
scanf("%d",&i);
if(i<0||i>p->length)
printf("删除位置非法");
else
{
for(j=i;jlength;j++)
p->score[j-1]=p->score[j];
p->length--;
}
PrintSList(p);
}
void main()
{
int i;
float x;
SeqList *p;
p=(SeqList*)malloc(sizeof(SeqList));
CreatSList(p);
PrintSList(p);
printf("输入所要插入的位置");
scanf("%d",&i);
printf("输入所要插入的元素");
scanf("%f",&x);
InsertSList(p,i,x);
DeleteSList(p);
}
课本2.5
(1)n3(2)n (3)n2(4)n2 (5)无穷大
课本2.7
(1)、(4)、(5)非线性
(2)、(3)线性
课件第二章第一节线性表
4.在一个单链表中p所指结点之前插入一个由指针s所指结点,可执行以下操作:
s->next= p->next ;
p->next=s;
t=p->data;
p->data= s->data ;
s->data= t ;
5.在顺序表中做插入操作时首先检查栈是否满了。