顺序表 */ #include <stdio.h> // 整数顺序表的表示 #define MAXSIZE 10 typedef struct { int data[MAXSIZE]; // 数组 - 保存顺序表数据元素 int length; // 长度 - 顺序表当前元素个数 }SqList; // 顺序表的输出函数 Print_List() void Print_List( SqList L ) { int i; printf("顺序表当前长度为:%d\n", L.length); printf("顺序表当前元素为:"); for(i=0; i<L.length; i++) printf("%d ", L.data[i]); printf("\n"); } // 顺序表的创建函数 Create_List() void Create_List( SqList *L, int len ) { int i; for(i=1; i<=len; i++) L->data[i-1]= i*2; L->length= len; } /* ---------------------------------------------------------------------------------- */ /* 编程测试内容 — 定义函数并实现以下操作: /* 1.查找值为 12 的数据元素,并输出序号 /* 2.最后一个元素之后插入一个新的数据元素(新的数据元素键盘输入),并输出整个顺序表 /* 3.删除最后一个数据元素,并输出整个顺序表 /* 4.第 6 个元素的位置插入一个新的数据元素(新的数据元素键盘输入),并输出整个顺序表 /* 5.删除第 3 个数据元素,并输出整个顺序表 /* ---------------------------------------------------------------------------------- */ // 以下为您的工作区域,函数定义和实现请在此编写 // 主函数 int main( void ) { SqList L1; Create_List( &L1, 8 ); Print_List( L1 ); // 以下为您在主函数中的工作区域,您操作的对象为顺序表 L1 return 0; }
时间: 2023-08-15 18:35:09 浏览: 72
顺序表的代码
4星 · 用户满意度95%
好的,我知道了,您想让我完成顺序表的一些操作。下面是您需要在主函数中实现的操作:
1. 查找值为 12 的数据元素,并输出序号
2. 最后一个元素之后插入一个新的数据元素(新的数据元素键盘输入),并输出整个顺序表
3. 删除最后一个数据元素,并输出整个顺序表
4. 第 6 个元素的位置插入一个新的数据元素(新的数据元素键盘输入),并输出整个顺序表
5. 删除第 3 个数据元素,并输出整个顺序表
下面是您需要编写的函数:
```c
// 查找值为x的数据元素,并返回其序号,如果不存在,则返回-1
int LocateElem( SqList L, int x )
{
int i;
for( i=0; i<L.length; i++ )
if( L.data[i] == x )
return i+1;
return -1; // 没有找到,返回-1
}
// 在顺序表的最后一个元素之后插入一个新的元素x
void InsertElem( SqList *L, int x )
{
if( L->length >= MAXSIZE ) // 顺序表已满,无法插入
return;
L->data[L->length] = x;
L->length++;
}
// 删除顺序表的最后一个元素
void DeleteLastElem( SqList *L )
{
if( L->length <= 0 ) // 顺序表为空,无法删除
return;
L->length--;
}
// 在顺序表的第i个位置插入一个新的元素x
void InsertElemByIndex( SqList *L, int i, int x )
{
if( L->length >= MAXSIZE || i<1 || i>L->length+1 ) // 顺序表已满或插入位置不合法,无法插入
return;
int j;
for( j=L->length; j>=i; j-- )
L->data[j] = L->data[j-1];
L->data[i-1] = x;
L->length++;
}
// 删除顺序表的第i个元素
void DeleteElemByIndex( SqList *L, int i )
{
if( L->length <= 0 || i<1 || i>L->length ) // 顺序表为空或删除位置不合法,无法删除
return;
int j;
for( j=i; j<L->length; j++ )
L->data[j-1] = L->data[j];
L->length--;
}
```
接下来是主函数的实现:
```c
int main( void )
{
SqList L1;
Create_List( &L1, 8 );
Print_List( L1 );
// 1. 查找值为12的数据元素,并输出其序号
int index = LocateElem( L1, 12 );
if( index != -1 )
printf("值为12的数据元素的序号为:%d\n", index);
else
printf("值为12的数据元素不存在\n");
// 2. 最后一个元素之后插入一个新的数据元素
int x;
printf("请输入要插入的新数据元素:");
scanf("%d", &x);
InsertElem( &L1, x );
Print_List( L1 );
// 3. 删除最后一个数据元素
DeleteLastElem( &L1 );
Print_List( L1 );
// 4. 在第6个元素的位置插入一个新的数据元素
printf("请输入要插入的新数据元素:");
scanf("%d", &x);
InsertElemByIndex( &L1, 6, x );
Print_List( L1 );
// 5. 删除第3个数据元素
DeleteElemByIndex( &L1, 3 );
Print_List( L1 );
return 0;
}
```
希望这些代码能够帮助您完成所需的操作。
阅读全文