typedef struct LNode{ int number;//序号 int password;//密码 struct LNode *next; }LNode,*LinkList; LinkList InitList(int n){ int i; LinkList L,ptr,p; ptr=(LinkList)malloc(sizeo
时间: 2023-05-15 09:07:21 浏览: 52
f(LNode)); L=ptr; for(i=1;i<n;i++){ p=(LinkList)malloc(sizeof(LNode)); ptr->next=p; ptr=p; ptr->number=i; ptr->password=rand()%1000; } ptr->next=L; return L; } 这段代码是什么意思?
这段代码是一个链表的初始化函数,用于创建一个包含n个节点的循环链表。其中,LNode是链表节点的结构体,包含序号和密码两个成员变量,next是指向下一个节点的指针。InitList函数返回一个LinkList类型的指针,指向链表的头节点。在函数中,先创建一个头节点L,并将ptr指向头节点,然后循环n-1次,每次创建一个新节点p,并将ptr的next指向p,再将ptr指向p,最后将尾节点的next指向头节点L,形成循环链表。在创建每个节点时,给它的number赋值为i,password赋值为一个随机数。
相关问题
请将&L改成*L而不出bug:#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data;//数据域 struct LNode *next;//指针域 }LNode,*LinkList; bool InitList(LinkList &L)//初始化单链表 { L = (LNode*)malloc(sizeof(LNode));//分配一个头节点 if (L == NULL) return false;//内存不足,分配失败 L->next = NULL;//头节点之后还没有节点 return true; }
将代码中的"&L"改为"L"即可,修改后的代码如下:
```
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode {
int data;//数据域
struct LNode* next;//指针域
}LNode, * LinkList;
bool InitList(LinkList& L)//初始化单链表
{
L = (LNode*)malloc(sizeof(LNode));//分配一个头节点
if (L == NULL)
return false;//内存不足,分配失败
L->next = NULL;//头节点之后还没有节点
return true;
}
```
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef enum{false=0,true=1}bool; typedef struct Lnode{ ElemType data; struct Lnode *next; int length; }Lnode,*Linklist; //初始化单链表 bool InitList(Lnode *L); //(头插法)创建单链表 void CreateListListF(
(Linklist L, int n) {
Linklist p;
int i;
L = (Lnode *)malloc(sizeof(Lnode));
L->next = NULL;
printf("请输入链表的元素:\n");
for (i = 0; i < n; i++) {
p = (Lnode *)malloc(sizeof(Lnode));
scanf("%d", &(p->data));
p->next = L->next;
L->next = p;
}
L->length = n;
return true;
}