利用C语言编程实现线性表两种存储表示和各种基本操作,要求:在主函数使用菜单形式调用各操作;该线性表的数据可以是一组学生的成绩或者自主确定。
时间: 2024-10-08 11:01:27 浏览: 35
在C语言中,线性表通常有两种存储表示,一种是动态数组(Linked List),另一种是静态数组(Array)。以下是这两种表示以及基本操作的简要实现:
1. 动态数组(链表)实现:
- 结构体定义:`typedef struct Node {int data; struct Node* next;} Node, *List;`
- 插入操作(例如插入到头部):
```c
void insertAtHead(List* list, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = list;
list = newNode;
}
```
- 删除操作(例如删除头部节点):
```c
void deleteFromHead(List* list) {
if(list != NULL) {
Node* temp = list;
list = list->next;
free(temp);
}
}
```
2. 静态数组实现(假设数组大小已知):
- 定义数组并初始化:
```c
#define MAX_SIZE 10
int arr[MAX_SIZE];
```
- 插入和删除操作通常涉及数组的索引移动,这需要额外考虑数组边界情况。
主函数中的菜单可以选择不同的操作,比如:
```c
void main() {
List dynamicList = NULL;
int choice, value;
while(1) {
printf("选择操作:\n1. 初始化动态数组\n2. 初始化静态数组\n3. 插入元素\n4. 删除元素\n5. 查看元素\n6. 退出\n");
scanf("%d", &choice);
switch(choice) {
case 1: // 初始化动态数组
... (类似上述链表操作)
break;
case 2: // 初始化静态数组
... (类似数组操作)
break;
case 3: // 插入元素
... (链表或数组插入操作)
break;
case 4: // 删除元素
... (链表或数组删除操作)
break;
case 5: // 查看元素
... (链表遍历或数组下标访问)
break;
case 6: // 退出程序
return;
default:
printf("无效选择,重新输入。\n");
}
}
}
```
阅读全文