写两端c语言代码以8位学号为基础按照数字顺序设计个位数和两位数基础数据。举例1:学号21106101,生成无重复的个位数数据为:2,1,0,6,每两位生成数据为:21,10, 61,1;去掉重复数据为:2,1,0,6,21,10,61。这7个数字作为后面实验使用的数据。题目要求:对以下功能设计函数 1.采用前插法创建带头节点的单链表,顺序输入设计的多个整数数据,创建单链表。函数名称:CreateSL 2.对前面设计的基础数据顺序输入建立二叉排序树。函数名称:CreateBSTree
时间: 2024-02-24 20:00:26 浏览: 236
好的,以下是两端C语言代码。
1. 采用前插法创建带头节点的单链表,顺序输入设计的多个整数数据,创建单链表。函数名称:CreateSL
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node *next;
} Node;
Node* CreateSL() {
Node *head = (Node*)malloc(sizeof(Node));
head->next = NULL;
Node *curr = head;
int nums[] = {2,1,0,6,21,10,61};
int len = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < len; i++) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = nums[i];
new_node->next = NULL;
curr->next = new_node;
curr = curr->next;
}
return head->next;
}
int main() {
Node *head = CreateSL();
Node *curr = head;
while (curr != NULL) {
printf("%d ", curr->data);
curr = curr->next;
}
return 0;
}
```
2. 对前面设计的基础数据顺序输入建立二叉排序树。函数名称:CreateBSTree
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BSTNode {
int data;
struct BSTNode *left;
struct BSTNode *right;
} BSTNode;
void InsertBSTNode(BSTNode **root, int data) {
if (*root == NULL) {
BSTNode *new_node = (BSTNode*)malloc(sizeof(BSTNode));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
*root = new_node;
return;
}
if (data < (*root)->data) {
InsertBSTNode(&((*root)->left), data);
} else if (data > (*root)->data) {
InsertBSTNode(&((*root)->right), data);
}
}
BSTNode* CreateBSTree() {
BSTNode *root = NULL;
int nums[] = {2,1,0,6,21,10,61};
int len = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < len; i++) {
InsertBSTNode(&root, nums[i]);
}
return root;
}
void InorderTraversal(BSTNode *root) {
if (root == NULL) {
return;
}
InorderTraversal(root->left);
printf("%d ", root->data);
InorderTraversal(root->right);
}
int main() {
BSTNode *root = CreateBSTree();
InorderTraversal(root);
return 0;
}
```
阅读全文