实验一 线性表的基本操作.doc
文本预览下载声明
实验一 线性表的基本操作
实验目的
熟悉C或VC++语言上机环境。
会定义线性表的顺序存储结构和链式存储结构。
熟悉顺序表和链表的一些基本操作和应用。
加深对线性表的理解,逐步培养解决实际问题的编程能力。
实验环境
运行C或VC++的微机。
实验内容
1.已知线性表LA的数据元素(n个,n为偶数),现要求将LA拆开成两个新的线性表LB,LC。要求LB中的数据元素为LA中的奇数位序的数据元素(a1, a3, …, an-1),LC中的数据元素为LA中的偶数位序的数据元素(a2, a4, …, an)。
#includestdio.h
#includemalloc.h
#define max 600//定义线性表的最大长度
typedef struct
{
char *elem;
char list[max];//线性表
int length;//指示当前线性表的长度
}
sqlist;
void initial(sqlist );//初始化线性表
void insert(sqlist ,int,char);//在线性表中插入元素
void initlist(sqlist );
void print(sqlist);//显示线性表中所有元素
void main()
{
sqlist la,lb,lc;//la,lb,lc为线性表
initial(la);
initlist(lb);
initlist(lc);
int i;
for(i=0;ila.length;i++)
{
if(i%2==0)
insert(lb,i/2,la.list[i]);
else
insert(lc,i/2,la.list[i]);
}
printf(\n您输入的线性表元素为:\n);
print(la);
printf(线性表的奇数位次的元素为:\n);
print(lb);
printf(线性表的偶数位次的元素为:\n);
print(lc);
}
void initial(sqlist v)
{
printf( ***本程序可以实现线性表奇偶位序的元素分别输出***\n);
int i,a;
printf(请输入一个偶数作为线性表的长度:\n);
scanf(%d,a);
while(a%2!=0)
{
printf(您刚才输入的是奇数,请重新输入一偶数:\n);
scanf(%d,a);
}
v.length=a;
printf(\n请输入线性表的元素:\n);
getchar();
for(i=0;iv.length;i++)
scanf(%c,v.list[i]);
}
void initlist(sqlist v)
{
v.elem=(char*)malloc(max*sizeof(char));
v.length=0;
}
void insert(sqlist v,int j,char c)
{
v.list[j]=c;
v.length++;
}
void print(sqlist v)
{
int i;
for(i=0;iv.length;i++)
{
printf(%c,v.list[i]);
}
printf(\n\n);
}
2. 已知线性表LA的数据元素(n个),现要求将LA的数据元素复制到另一个线性表LB中。
#includestdio.h
#includemalloc.h
#define max 600
typedef struct
{
char *elem;
char list[max];
int length;
}
sqlist;
void initial(sqlist );
void initlist(sqlist );
void print(sqlist);
void main()
{
printf(***本程序可以实现线性表的复制***\n);
sqlist la,lb;
initial(la);
initlist(lb);
int i;
for(i=0;ila.length;i++)
{
lb.list[i]=la.list[i];
lb.length++;
}
print(lb);
}
void initial(sqlist v)
{
int i;
printf(请输入线性表的长度:\n);
scanf(%d,v.length);
printf(请输入线性表的元素:\n);
getchar();
for(i=0;iv.length;i++)
scanf(%c,v.list[i]);
}
void initlist(sql
显示全部