以下算法是你课堂上学习到的尾插法创建单链表,请阅读算法并填空,使得算法完整无误。void CreateListR(L inkList *&L,ElemType a[,intn) { LinkList *s,*r;int i; L=(LinkList *)malloc(sizeof(L inkL ist));/*创建头结点*/ r=L; /*r始终 指向终端结点,开始时指向头结点*/ for (i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(L inkList);/*创建新结点*/ s->data=a[i]; /*将*s插入*r之后*/ r=S; } ; /*终端结点next域置为NULL*/ } 第1空: 第2空:
时间: 2023-04-06 17:01:11 浏览: 74
head)
{
LNode *s, *r=NULL;
int x;
scanf("%d",&x);
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
if(*head==NULL)
*head=s;
else
r->next=s;
r=s;
scanf("%d",&x);
}
if(r!=NULL)
r->next=NULL;
}
空格处应填写:*
相关问题
设计一个不带头结点的单链表的递归算法,用尾插法输入5个数据,反向输出单链表数据
递归算法如下:
1. 定义一个单链表结构体Node,包含数据域和指向下一个节点的指针域。
2. 定义一个函数createList,用于创建单链表。该函数接收一个指向头节点的指针,以及一个整型变量n,表示需要创建的节点数。
3. 在createList函数中,首先判断n是否为0,如果是,则返回空指针;否则,创建一个新节点,将其数据域赋值为用户输入的数据,将其指针域赋值为NULL。
4. 然后递归调用createList函数,将n减1,将新节点的指针域指向递归返回的节点。
5. 最后返回新节点的指针。
6. 在主函数中,调用createList函数创建单链表,并用尾插法输入5个数据。
7. 定义一个函数reversePrint,用于反向输出单链表数据。该函数接收一个指向头节点的指针。
8. 在reversePrint函数中,首先判断当前节点是否为空,如果是,则返回;否则,递归调用reversePrint函数,输出下一个节点的数据,然后输出当前节点的数据。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
Node *createList(Node **head, int n) {
if (n == 0) {
return NULL;
}
Node *newNode = (Node *)malloc(sizeof(Node));
printf("请输入第%d个节点的数据:", n);
scanf("%d", &newNode->data);
newNode->next = NULL;
newNode->next = createList(head, n - 1);
if (*head == NULL) {
*head = newNode;
}
return newNode;
}
void reversePrint(Node *head) {
if (head == NULL) {
return;
}
reversePrint(head->next);
printf("%d ", head->data);
}
int main() {
Node *head = NULL;
createList(&head, 5);
printf("反向输出单链表数据:");
reversePrint(head);
printf("\n");
return 0;
}
c语言数据结构单链表的创建,输入,查找,删除完整算法
单链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。下面是C语言中单链表的创建、输入、查找和删除的完整算法。
1. 创建单链表:
首先定义一个节点结构体,包括数据元素和指向下一个节点的指针。然后定义一个头节点指针,初始化为NULL,表示链表为空。通过循环读入数据元素,创建新节点,将数据存放在新节点中,并将新节点插入到链表的末尾。
2. 输入单链表:
通过循环读入数据元素,创建新节点,并将新节点插入到链表的末尾。
3. 查找节点:
从头节点开始遍历链表,依次比较每个节点的数据元素与目标值。如果找到了目标值,则返回该节点的指针;如果遍历到链表末尾仍未找到目标值,则返回NULL。
4. 删除节点:
首先判断链表是否为空,如果为空则无法删除节点。从头节点开始遍历链表,依次比较每个节点的数据元素与目标值。如果找到了目标值节点的前一个节点,并将其指针指向目标值节点的下一个节点,同时释放目标值节点的内存空间。
以上就是C语言中单链表的创建、输入、查找和删除的完整算法。需要注意的是,算法中涉及动态内存分配的部分需要在使用完成后,手动释放内存,避免内存泄漏问题的产生。