实现顺序表的基本操作: (1)构造空的顺序表; (2)建立含有若干数据元素的顺序表; (3)求表长; (4)获取第i个元素的值; (5)数据元素插入; (6)数据元素删除; (7)输出顺序表; 要求分别用函数实现上述功能,并设计主程序调用上述函数,需使用菜单。
时间: 2023-09-16 20:05:04 浏览: 102
### 回答1:
好的,以下是实现顺序表基本操作的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef int ElemType; // 定义顺序表存储的元素类型
typedef struct {
ElemType data[MAXSIZE]; // 存储元素的数组
int length; // 当前顺序表的长度
} SqList; // 定义顺序表的结构体
// 初始化一个空的顺序表
void InitList(SqList *L) {
L->length = 0; // 将顺序表的长度初始化为0
}
// 建立一个含有n个元素的顺序表
void CreateList(SqList *L, int n) {
if (n > MAXSIZE) { // 如果元素个数超过了最大长度,则无法建立顺序表
printf("Error: The number of elements is too large!\n");
return;
}
printf("Please input %d elements: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &L->data[i]); // 逐个输入元素
}
L->length = n; // 更新顺序表的长度
printf("List created successfully!\n");
}
// 求顺序表的长度
int Length(SqList L) {
return L.length; // 直接返回顺序表的长度
}
// 获取第i个元素的值
ElemType GetElem(SqList L, int i) {
if (i < 1 || i > L.length) { // 如果i的值超出了顺序表的范围,则返回错误
printf("Error: Index out of range!\n");
return -1;
}
return L.data[i - 1]; // 返回第i个元素的值
}
// 在顺序表的第i个位置插入元素e
void InsertElem(SqList *L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) { // 如果i的值超出了顺序表的范围,则返回错误
printf("Error: Index out of range!\n");
return;
}
if (L->length >= MAXSIZE) { // 如果顺序表已满,则无法插入元素
printf("Error: The list is full!\n");
return;
}
for (int j = L->length; j >= i; j--) { // 将i及其后面的元素依次后移
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e; // 在i的位置插入元素e
L->length++; // 更新顺序表的长度
printf("Element inserted successfully!\n");
}
// 删除顺序表中第i个元素
void DeleteElem(SqList *L, int i) {
if (i < 1 || i > L->length) { // 如果i的值超出了顺序表的范围,则返回错误
printf("Error: Index out of range!\n");
return;
}
for (int j = i; j < L->length; j++) { // 将i后面的元素依次前移
L->data[j - 1] = L->data[j];
}
L->length--; // 更新顺序表的长度
printf("Element deleted successfully!\n");
}
// 输出顺序表中的所有元素
void PrintList(SqList L) {
printf("The elements of the list are: ");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 主函数
int main() {
SqList L;
int choice, n, i;
ElemType e;
while (1) {
printf("Please choose the operation you want to perform:\n");
printf("1. InitList\n");
printf("2. CreateList\n");
printf("3. Length\n");
printf("4. GetElem\n");
printf("5. InsertElem\n");
printf("6. DeleteElem\n");
printf("7. PrintList\n");
printf("0. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
InitList(&L);
printf("List initialized successfully!\n");
break;
case 2:
printf("Please input the number of elements: ");
scanf("%d", &n);
CreateList(&L, n);
break;
case 3:
printf("The length of the list is: %d\n", Length(L));
break;
case 4:
printf("Please input the index of the element you want to get: ");
scanf("%d", &i);
e = GetElem(L, i);
if (e != -1) {
printf("The element is: %d\n", e);
}
break;
case 5:
printf("Please input the index and the element you want to insert: ");
scanf("%d%d", &i, &e);
InsertElem(&L, i, e);
break;
case 6:
printf("Please input the index of the element you want to delete: ");
scanf("%d", &i);
DeleteElem(&L, i);
break;
case 7:
PrintList(L);
break;
case 0:
printf("Program exited successfully!\n");
exit(0);
default:
printf("Error: Invalid choice!\n");
}
}
return 0;
}
```
使用菜单方式可以让用户选择需要进行的操作,方便实用。
### 回答2:
实现顺序表的基本操作:
(1) 构造空的顺序表:
```python
def initList():
return []
```
(2) 建立含有若干数据元素的顺序表:
```python
def insertElement(lst, data):
lst.append(data)
def createList():
lst = initList()
n = int(input("请输入元素个数:"))
for i in range(n):
data = int(input("请输入第{}个元素:".format(i+1)))
insertElement(lst, data)
return lst
```
(3) 求表长:
```python
def getLength(lst):
return len(lst)
```
(4) 获取第i个元素的值:
```python
def getElement(lst, i):
return lst[i-1]
```
(5) 数据元素插入:
```python
def insertData(lst, i, data):
lst.insert(i-1, data)
```
(6) 数据元素删除:
```python
def deleteData(lst, i):
del lst[i-1]
```
(7) 输出顺序表:
```python
def printList(lst):
print("顺序表内容为:")
for data in lst:
print(data, end=" ")
print()
```
主程序调用上述函数并使用菜单:
```python
lst = []
while True:
print("1. 构造空的顺序表")
print("2. 建立含有若干数据元素的顺序表")
print("3. 求表长")
print("4. 获取第i个元素的值")
print("5. 插入数据元素")
print("6. 删除数据元素")
print("7. 输出顺序表")
print("0. 退出")
choice = int(input("请输入您的选择:"))
if choice == 1:
lst = initList()
elif choice == 2:
lst = createList()
elif choice == 3:
length = getLength(lst)
print("顺序表的长度为:", length)
elif choice == 4:
i = int(input("请输入元素位置:"))
element = getElement(lst, i)
print("第{}个元素的值为:{}".format(i, element))
elif choice == 5:
i = int(input("请输入插入位置:"))
data = int(input("请输入插入的值:"))
insertData(lst, i, data)
elif choice == 6:
i = int(input("请输入删除位置:"))
deleteData(lst, i)
elif choice == 7:
printList(lst)
elif choice == 0:
break
else:
print("输入有误,请重新输入!")
```
以上就是实现顺序表基本操作的解答。
### 回答3:
实现顺序表的基本操作:
```python
# 1. 构造空的顺序表
def initList():
return []
# 2. 建立含有若干数据元素的顺序表
def createList():
n = int(input("请输入顺序表的长度:"))
lst = []
for i in range(n):
value = input("请输入第{}个元素的值:".format(i+1))
lst.append(value)
return lst
# 3. 求表长
def length(lst):
return len(lst)
# 4. 获取第i个元素的值
def getElem(lst, i):
if i < 1 or i > len(lst):
return "索引越界"
return lst[i-1]
# 5. 数据元素插入
def insertElem(lst, i, value):
if i < 1 or i > len(lst)+1:
return "索引越界"
lst.insert(i-1, value)
return lst
# 6. 数据元素删除
def deleteElem(lst, i):
if i < 1 or i > len(lst):
return "索引越界"
lst.pop(i-1)
return lst
# 7. 输出顺序表
def printList(lst):
print("顺序表的元素为:", end="")
for elem in lst:
print(elem, end=" ")
print("")
# 主程序
def main():
lst = initList()
while True:
print("请选择操作:")
print("1. 建立含有若干数据元素的顺序表")
print("2. 求表长")
print("3. 获取第i个元素的值")
print("4. 数据元素插入")
print("5. 数据元素删除")
print("6. 输出顺序表")
print("0. 退出")
choice = input("请输入操作编号:")
if choice == "1":
lst = createList()
elif choice == "2":
print("顺序表的长度为:", length(lst))
elif choice == "3":
i = int(input("请输入要获取的元素的位置:"))
print("第{}个元素的值为:{}".format(i, getElem(lst, i)))
elif choice == "4":
i = int(input("请输入要插入的位置:"))
value = input("请输入要插入的元素的值:")
lst = insertElem(lst, i, value)
elif choice == "5":
i = int(input("请输入要删除的元素的位置:"))
lst = deleteElem(lst, i)
elif choice == "6":
printList(lst)
elif choice == "0":
break
else:
print("输入无效,请重新选择")
if __name__ == '__main__':
main()
```
以上是一个使用Python语言实现顺序表基本操作的示例,可以根据需要进行修改。在主程序中,根据用户选择调用不同的函数完成操作,每次操作完成后重新显示菜单以供下一次选择。
阅读全文