用数据结构与算法相关知识,用c语言,写一段能够通过线性表来点名学生的完整代码,需要有顺序表和链式表两个版本
时间: 2024-09-18 11:02:38 浏览: 43
当然可以,下面是一个简单的例子,分别展示了如何用C语言实现顺序表(数组)和链表(单链表)来进行点名操作:
### 顺序表 (Array) 点名示例
```c
#include <stdio.h>
typedef struct {
char name[50];
int index;
} Student;
// 顺序表
#define MAX_STUDENTS 10
Student students[MAX_STUDENTS];
void callStudents() {
for(int i = 0; i < MAX_STUDENTS; i++) {
printf("学生 %d: %s\n", students[i].index, students[i].name);
}
}
int main() {
// 初始化学生列表
strcpy(students[0].name, "张三");
students[0].index = 1;
strcpy(students[1].name, "李四");
students[1].index = 2;
// ... 其他学生
callStudents(); // 点名
return 0;
}
```
### 链式表 (LinkedList) 点名示例
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char name[50];
int index;
struct Node* next;
} StudentNode;
// 链表
struct List {
StudentNode* head;
};
void appendStudent(struct List* list, const char* name, int index) {
StudentNode* newNode = (StudentNode*)malloc(sizeof(StudentNode));
strcpy(newNode->name, name);
newNode->index = index;
newNode->next = list->head;
list->head = newNode;
}
void printList(struct List* list) {
StudentNode* temp = list->head;
while(temp != NULL) {
printf("学生 %d: %s\n", temp->index, temp->name);
temp = temp->next;
}
}
int main() {
struct List studentList;
studentList.head = NULL;
appendStudent(&studentList, "张三", 1);
appendStudent(&studentList, "李四", 2); // ... 其他学生
printList(&studentList); // 点名
return 0;
}
```
以上代码都是基本示例,实际应用中可能需要处理更多的边界情况和错误检查。
阅读全文