数据结构 链表 c语言 简单问题

问题描述

数据结构 链表 c语言 简单问题

正在学习数据结构 有个问题想问一下
下面的代码中为什么 pt == NULL 就说明列表满?

 //如果列表满则返回真
bool ListIsFull (const List * plist)
{
    Node * pt;
    bool full;

    pt = (Node *)malloc(sizeof (Node));
    if (pt == NULL)
        full = true;
    else
        full = false;
    free (pt);
    return full;
}

解决方案

因为前一句是 malloc 申请内存,申请不到内存返回的指针就是 NULL——既然没内存了就不能向列表添加新节点,看成“满了”。
吐槽:这个函数该叫 MemoryIsFull(),参数 plist 根本没用到么!

时间: 2024-11-18 18:04:06

数据结构 链表 c语言 简单问题的相关文章

c语言 链表-数据结构链表创建出错

问题描述 数据结构链表创建出错 麻烦大家帮我看看哪里出错了,十分感谢啊 #include "stdio.h" #include "malloc.h" #include "stdlib.h" #define NULL 0 #define OK 1 typedef int ElemType; typedef int Status; typedef struct LNode{ ElemType data; struct LNode *next; }LN

编程语言 c语言-新手求指教!用c语言 简单学生成绩统计软件 。万分感谢,编好发到邮箱425572938@.

问题描述 新手求指教!用c语言 简单学生成绩统计软件 .万分感谢,编好发到邮箱425572938@. 实现的任务: (1)每个学生记录中包含学号.姓名和C 语言课设成绩等信息: (2)创建学生记录链表: (3)更新学生记录(插入.排序.删除): (4)能统计各分数段的人数,并以分布图显示: (5)输出学生记录到屏幕. 设计内容: 1. 学生记录应该包括学号.姓名.C 语言课设成绩等信息,是本程序的核心数据结构,定 义如下: typedef struct { char num[11]; /*学号*

排序算法-数据结构基数排序c++语言

问题描述 数据结构基数排序c++语言 设计一个将一组英文单词按字典序排列的基数排序算法.设单词均由小写字母或空格构成,最长的单词有n个字母 解决方案 简单说下思路吧.先有26个指针数组,分别对应单词的第一位的a-z,这个指针指向另一个指针数组,对应单词的第二位字母(这层的数组最多可能有26个).以此类推,直到最后直接指向单词. 解决方案二: /******************************************************** *函数名称:GetNumInPos *参

JavaScript数据结构链表知识详解_javascript技巧

最近在看<javascript数据结构和算法>这本书,补一下数据结构和算法部分的知识,觉得自己这块是短板. 链表:存储有序的元素集合,但不同于数组,链表中的元素在内存中不是连续放置的.每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 好处:可以添加或移除任意项,它会按需扩容,且不需要移动其他元素. 与数组的区别:     数组:可以直接访问任何位置的任何元素:     链表:想要访问链表中的一个元素,需要从起点(表头)开始迭代列表直到找到所需的元素. 做点小笔

C语言静态链表和动态链表_C 语言

1. 静态链表 结构体中的成员可以是各种类型的指针变量,当一个结构体中有一个或多个成员的基类型是本结构体类型时,则称这种结构体为"引用自身的结构体".如: struct link { char ch; struct link *p; } a; p是一个可以指向 struct link 类型变量的指针成员.因此,a.p = &a 是合法的表达式,由此构成的存储结构如图1所示. 图1 引用自身的结构体 例1 一个简单的链表 #include <stdio.h> stru

c语言-C语言简单程序调试问题

问题描述 C语言简单程序调试问题 这是源码: #include #include int main() { double x,y,z,i; for(x = 1;x<100000;x++) { y = sqrt(x+100); z = sqrt(x+268); if((y*y == x+100)&&(z*z == x+268)) { printf("%lfn",x); } } return 0; } 不知道问题出在哪里?麻烦解答一下. 另,为什么知道设定的数值范围是

c语言-InitTriplet里的(Triplet &amp;amp;amp;T)是什意思,是严蔚敏数据结构(C语言)里的。

问题描述 InitTriplet里的(Triplet &T)是什意思,是严蔚敏数据结构(C语言)里的. include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef ElemType* Triplet; Status Ini

go语言简单网络程序实例分析_Golang

本文实例分析了go语言简单网络程序.分享给大家供大家参考.具体分析如下: 服务端代码如下: 复制代码 代码如下: package main import (     "net"     "os" ) func serve(s net.Conn) {     var buf [1024]byte     for {         n, err := s.Read(&buf)         if err != nil || n == 0 {         

关于数据结构(c语言版)线性表的问题

问题描述 关于数据结构(c语言版)线性表的问题 写完线性表实验代码后,有些错误 不会调试 求大神帮帮忙! ps.错误截图:图片说明 代码: #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef struct{ ElemType* elem; //存储空间基址 int length; //当前长度 int listsiz