实验内容
1.编写程序实现顺序表的下列基本操作:
(1) 初始化顺序表La。
(2) 在顺序表中插入元素形成表[ 10 20 30 40 50],并输出表。
(3) 删除表中第3个元素,并输出表
(4) 删除元素40,并输出表
(5)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。
(6)打印输出La中的元素值。
2.编写程序完成下面的操作:
(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。
(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。
定义结构体
typedef struct {
int data[maxSize];
int length;
}seqlist;
声明所需函数
void insertContentByIndex (seqlist *list,int content,int index);
void insertContent (seqlist *list,int content);
void deleteByIndex (seqlist *list,int index);
void deleteByContent (seqlist *list,int content);
int findFirstContentToIndex (seqlist *list,int content);
void printList (seqlist *list);
主函数实现指定功能
int main ()
{
seqlist La;
La.length = 0;
insertContent(&La , 10);
insertContent(&La , 20);
insertContent(&La , 30);
insertContent(&La , 40);
insertContent(&La , 40);
insertContent(&La , 50);
printList(&La);
deleteByIndex(&La , 3);
printList(&La);
deleteByContent(&La , 50);
printList(&La);
insertContentByIndex(&La , 80 , 3);
printList(&La);
findFirstContentToIndex(&La , 50);
return 0;
}
程序源代码
#include <stdio.h>
#define maxSize 10
typedef struct {
int data[maxSize];
int length;
}seqlist;
void insertContentByIndex (seqlist *list,int content,int index);
void insertContent (seqlist *list,int content);
void deleteByIndex (seqlist *list,int index);
void deleteByContent (seqlist *list,int content);
int findFirstContentToIndex (seqlist *list,int content);
void printList (seqlist *list);
int main ()
{
seqlist La;
La.length = 0;
insertContent(&La , 10);
insertContent(&La , 20);
insertContent(&La , 30);
insertContent(&La , 40);
insertContent(&La , 40);
insertContent(&La , 50);
printList(&La);
deleteByIndex(&La , 3);
printList(&La);
deleteByContent(&La , 50);
printList(&La);
insertContentByIndex(&La , 80 , 3);
printList(&La);
findFirstContentToIndex(&La , 50);
return 0;
}
void insertContentByIndex (seqlist *list,int content,int index)
{
if (index > maxSize && list->length >= maxSize)
{
printf("超出表的限定范围\n");
return;
}
int i = list->length;
for ( ;i >= index; i--)
{
list->data[i] = list->data[i-1];
}
list->data[index-1] = content;
list->length ++;
printf("数据%d 插入在%d 成功\n",content,index);
}
void insertContent (seqlist *list,int content)
{
if(list->length >= maxSize)
{
printf("表已经满了,无法插入新数据\n");
return;
}
list->data[list->length] = content;
list->length ++;
printf("数据%d\tpush成功\n",content);
}
void deleteByIndex (seqlist *list,int index)
{
int i = index - 1 ;
int content = list->data[index-1];
for (; i < list->length - 1; i++)
{
list->data[i] = list->data[i+1];
}
list->length --;
printf("数据%d删除成功\n",content);
}
void deleteByContent (seqlist *list,int content)
{
int i = 0;
while(i<list->length)
{
if (list->data[i] == content){
deleteByIndex(list,i+1);
}else{
i++;
}
}
}
int findFirstContentToIndex (seqlist *list,int content)
{
int i;
for (i=0 ; i<list->length ; i++)
{
if (list->data[i] == content)
{
printf("该数据第一次出现在表中第%d个位置\n",i+1);
return i+1;
}
}
printf("没有找到该数据%d\n",content);
return 0;
}
void printList(seqlist *list)
{
int i;
printf("表内容为:\t");
for (i = 0; i < list->length; i++)
{
printf("%d\t",list->data[i]);
}
printf("\n");
}
运行结果