对以下功能设计函数,并给出函数代码 1.采用前插法创建带头节点的单链表,顺序输入设计的多个整数数据,创建单链表。函数名称:CreateSL
时间: 2024-02-24 15:59:36 浏览: 88
以下是采用前插法创建带头节点的单链表的函数代码:
```c++
#include<iostream>
using namespace std;
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkedList;
LinkedList CreateSL(){
LinkedList L;
L = new Node;
L->next = NULL;
int x;
while(cin>>x){
Node *s = new Node;
s->data = x;
s->next = L->next;
L->next = s;
}
return L;
}
int main(){
LinkedList L;
L = CreateSL();
Node *p = L->next;
while(p){
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
return 0;
}
```
这个函数会在程序运行时从标准输入流中依次读入整数数据,并创建一个带头节点的单链表。由于采用的是前插法,所以数据会被逆序插入到单链表中。最后,函数返回创建好的单链表的头指针。在主函数中,我们可以遍历单链表并输出其中的数据。
相关问题
请用C语言帮我写一个代码,采用前插法创建带头节点的单链表,顺序输入设计的多个整数数据,创建单链表。函数名称:CreateSL
好的,以下是基于前插法创建带头节点的单链表的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node, *LinkedList;
// 创建带头节点的单链表
LinkedList CreateSL(int n) {
LinkedList head, p;
int i, x;
head = (LinkedList)malloc(sizeof(Node)); // 创建头节点
head->next = NULL;
for (i = 0; i < n; i++) {
scanf("%d", &x);
p = (LinkedList)malloc(sizeof(Node)); // 创建新的节点
p->data = x;
p->next = head->next; // 新节点指向头节点的下一个节点
head->next = p; // 头节点指向新节点
}
return head;
}
int main() {
int n;
printf("请输入要创建的节点个数:");
scanf("%d", &n);
LinkedList L = CreateSL(n); // 创建带头节点的单链表
printf("创建成功!");
return 0;
}
```
在上面的代码中,我们使用了结构体来定义节点,包括数据成员 `data` 和指向下一个节点的指针 `next`。`CreateSL` 函数采用前插法创建带头节点的单链表,并返回头节点指针。在 `main` 函数中,我们调用 `CreateSL` 函数来创建单链表,并输出创建成功的信息。
写两端c语言代码以8位学号为基础按照数字顺序设计个位数和两位数基础数据。举例1:学号21106101,生成无重复的个位数数据为:2,1,0,6,每两位生成数据为:21,10, 61,1;去掉重复数据为:2,1,0,6,21,10,61。这7个数字作为后面实验使用的数据。题目要求:对以下功能设计函数 1.采用前插法创建带头节点的单链表,顺序输入设计的多个整数数据,创建单链表。函数名称:CreateSL 2.对前面设计的基础数据顺序输入建立二叉排序树。函数名称:CreateBSTree
好的,以下是两端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;
}
```
阅读全文