建一存储学生信息(包含姓名和年龄)的线性表,要求用顺序存储结构实现,实现查询、插入和删除学生信息并将该表中的信息显示出来。
时间: 2023-04-22 18:07:03 浏览: 52
可以使用数组来实现顺序存储结构,每个元素存储一个学生的姓名和年龄。具体实现步骤如下:
1. 定义一个数组,数组元素类型为结构体,结构体包含两个成员变量,分别为姓名和年龄。
2. 实现查询功能,可以通过遍历数组,查找指定姓名的学生信息,如果找到了,则返回该学生的信息,否则返回查无此人。
3. 实现插入功能,可以在数组的末尾添加一个新的学生信息,或者在指定位置插入一个新的学生信息。
4. 实现删除功能,可以通过遍历数组,查找指定姓名的学生信息,如果找到了,则删除该学生的信息,否则返回查无此人。
5. 实现显示功能,可以遍历数组,将所有学生的信息依次显示出来。
需要注意的是,使用顺序存储结构实现线性表时,需要考虑数组的大小和扩容问题,以免出现数组越界或者内存溢出的情况。
相关问题
写出线性表以顺序存储结构存储,在表中实现冒泡排序和直接插入排序
好的,我来回答你的问题。
首先,线性表是一种数据结构,顺序存储结构是其中一种实现方式,即使用一个一维数组来存储数据元素,同时通过下标来访问元素。
接下来,我们来看如何在线性表中实现冒泡排序和直接插入排序。
1. 冒泡排序
冒泡排序是一种简单的排序算法,其基本思想是比较相邻的元素,如果前一个大于后一个,则交换它们。重复这个过程,直到没有元素需要交换为止。
在线性表中实现冒泡排序的代码如下:
```c
void bubble_sort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
```
其中,a[] 表示存储数据的数组,n 表示数组的长度。
2. 直接插入排序
直接插入排序是一种简单的排序算法,其基本思想是将一个待排序的元素插入到已经排好序的有序表中,形成一个新的有序表。
在线性表中实现直接插入排序的代码如下:
```c
void insert_sort(int a[], int n) {
for (int i = 1; i < n; i++) {
int j = i - 1;
int tmp = a[i];
while (j >= 0 && a[j] > tmp) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = tmp;
}
}
```
其中,a[] 表示存储数据的数组,n 表示数组的长度。
以上就是在线性表中实现冒泡排序和直接插入排序的代码。希望对你有所帮助。
设计一个算法求A和B两个集合的并集。用C语言,用线性表顺序存储结构实现
以下是通过顺序表实现求两个集合的并集的C语言代码:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e)
return i;
}
return -1;
}
void ListInsert(SqList *L, int i, int e) {
if (L->length == MAXSIZE) {
printf("List is full.\n");
return;
}
if (i < 1 || i > L->length + 1) {
printf("Insert position is invalid.\n");
return;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
}
void Union(SqList *A, SqList B) {
for (int i = 0; i < B.length; i++) {
if (LocateElem(*A, B.data[i]) == -1) {
ListInsert(A, A->length + 1, B.data[i]);
}
}
}
void printList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList A, B;
InitList(&A);
InitList(&B);
ListInsert(&A, 1, 1);
ListInsert(&A, 2, 2);
ListInsert(&A, 3, 3);
ListInsert(&B, 1, 2);
ListInsert(&B, 2, 3);
ListInsert(&B, 3, 4);
Union(&A, B);
printList(A);
return 0;
}
```
以上代码中,使用 `SqList` 结构体存储集合,包含数据数组和当前长度。`InitList` 函数用于初始化空顺序表,`LocateElem` 函数用于查找元素在顺序表中的位置,`ListInsert` 函数用于在指定位置插入元素,`Union` 函数用于求两个集合的并集。最后使用 `printList` 函数输出并集。