找一个实际场景拿链表/顺序表实现,并用C语言编码测试
时间: 2024-10-21 18:08:21 浏览: 30
学生成绩管理系统课设报告(C语言链表实现)
5星 · 资源好评率100%
在实际编程中,链表是一种常用的数据结构,尤其适用于需要频繁插入、删除元素的情况,因为其操作效率相对较高,不需要像数组那样预先分配固定大小的空间。这里我们可以创建一个简单的链表用于存储学生的成绩信息,每个节点包含学生ID和成绩。
首先,我们定义链表节点(Node)结构:
```c
typedef struct Node {
int student_id;
float score;
struct Node* next;
} StudentScoreNode;
```
接着,我们可以定义链表相关的函数,如初始化链表、添加节点、打印链表等:
```c
// 初始化空链表
StudentScoreNode* createList() {
return NULL;
}
// 添加节点到链表尾部
void addNode(StudentScoreNode** head, int student_id, float score) {
StudentScoreNode* newNode = (StudentScoreNode*)malloc(sizeof(StudentScoreNode));
newNode->student_id = student_id;
newNode->score = score;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
StudentScoreNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 打印链表
void printList(StudentScoreNode* head) {
StudentScoreNode* temp = head;
while (temp != NULL) {
printf("学生ID: %d, 成绩: %.2f\n", temp->student_id, temp->score);
temp = temp->next;
}
}
```
现在你可以编写一个主函数来测试这些功能:
```c
int main() {
StudentScoreNode* listHead = createList();
addNode(&listHead, 1001, 85.0);
addNode(&listHead, 1002, 90.5);
addNode(&listHead, 1003, 88.7);
printList(listHead); // 打印初始链表
free(listHead); // 程序结束前释放内存
return 0;
}
```
在这个例子中,我们创建了一个简单的链表用于存储学生的成绩,并演示了如何添加和查看链表内容。
阅读全文