首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >关于链接的lIst的一些帮助

关于链接的lIst的一些帮助
EN

Stack Overflow用户
提问于 2010-02-24 01:47:44
回答 3查看 313关注 0票数 0

好的,我已经更新了我的代码。我遇到了一个新问题,但它似乎走在正确的道路上。现在,当我输入数字时,它只是不断地吐出我输入的第一个数字,而不是移动到下一个数字。

main.c

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <cType.h>
#include "list.h"


#define amount 3 

//Prototypes
void printList(LIST* number);

int main(){
    int i;
    int* dataPtr;
    int number;

    LIST* numberList;
    numberList = createList();

    printf("Please enter %d numbers for the linked list\n", amount);

    for(i = 0; i < amount; i++){
          printf("#%d: ", i+1);
          scanf("%d", &number);
          dataPtr = malloc(sizeof(int));
          *dataPtr = number;
          addNode(numberList, dataPtr);
    }
    printList(numberList);
    system("PAUSE");    
    return 0;
}

void printList(LIST* number){
     int* dataPtr;
     while (!emptyList(number)){
           traverse(number,0, (void*)&dataPtr);
           printf("%d\n", *dataPtr);
           addNode(number, dataPtr);
     }
}

list.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <cType.h>

//List ADT Type Definitions
typedef struct node{
        void* dataPtr;
        struct node* link;
        } NODE;

typedef struct{
        int count;
        NODE* pos;
        NODE* head;
        NODE* rear;
        } LIST;
//Prototype Declarations
LIST* ceateList(void);

bool traverse (LIST* pList, int fromWhere, void** dataOutPtr);

int listCount (LIST* pList);
bool emptyList (LIST* pList);
bool fullList (LIST* pList);

bool addNode (LIST* pList, void* dataInPtr);

list.c

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <cType.h>

#include "list.h"

LIST* createList(void){
      LIST* list;

      list = (LIST*) malloc (sizeof(list));

      if(list){
               list->head = NULL;

               list->rear = NULL;
               list->count = 0;
      }
      return list;
}

bool addNode(LIST* pList, void* dataInPtr){
       NODE* pNew;

       if(!(pNew = (NODE*) malloc(sizeof(NODE))))
                 return false;

       pNew->dataPtr = dataInPtr;
       pNew->link =  NULL;

       if(pList->count == 0){
               pNew->link = pList->head;
               pList->head = pNew;
               if(pList->count == 0)
                 pList->rear = pNew;
       }
       else{
            pNew->link = pNew;

            if(pNew->link == NULL)
               pList->rear = pNew;
       }
       (pList->count)++;
       return true;
}


bool emptyList(LIST* pList){
     return(pList->count == 0);
}

bool fullList(LIST* pList){
     NODE* temp;

     if((temp = (NODE*)malloc(sizeof(*(pList->head))))){
              free(temp);
              return false;
     }
     return true;
}

int listCount(LIST* pList){
    return pList->count;
}

bool traverse(LIST* pList, int fromWhere, void** dataPtrOut){
     if(pList->count == 0)
                     return false;

     if(fromWhere == 0){
                  pList->pos = pList->head;
                  *dataPtrOut = pList->pos->dataPtr;
                  return true;
     }
     else{
          if (pList->pos->link == NULL)
             return false;
          else{
               pList->pos = pList->pos->link;
               *dataPtrOut = pList->pos->dataPtr;
               return true;
          }
     }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-24 01:54:24

当你调用_insert()时,你还没有初始化pPre。在C中,未初始化的内存不一定是NULL

此外,如果我是你,我会从LIST类型中删除pos指针-使用它会使你的代码非常不容易重入。

票数 1
EN

Stack Overflow用户

发布于 2010-02-24 01:54:46

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list = (LIST*) malloc (sizeof(list));

你有指针的大小,而不是结构的大小。

票数 5
EN

Stack Overflow用户

发布于 2010-02-24 02:52:23

我认为学习使用调试器会是一个好主意。它是所有devs技能集合中必不可少的一部分。

如果这是在使用gcc的Linux系统上(很可能),那么使用-g编译代码,并使用gdb运行它。如果你需要更多关于这方面的指导,那就说吧

附言:我同意之前的帖子,你不应该使用所有的大写变量名。传统上,所有大写字母都用于宏和常量

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2323108

复制
相关文章
<JVM> 关于GC的一些文章链接
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html
大学里的混子
2018/11/28
4930
关于链接文件的探讨
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 偶尔在用,其实就是软链接和硬链接两种 软链接 和 win里面的快捷方式差不多,
逸鹏
2018/04/11
9670
关于链接文件的探讨
list的一些使用
list无数据判断                                                                                                                                    在一次判断中,我这样: if(list!=null){ ... } 结果发现list为空数据的时候不管用,后来发现,list只要创建实例就不会是null,但可以为empty,因此 if(list!=null || list.
Ryan-Miao
2018/03/13
5350
IDEA中关于模块的一些总结,希望对大家有所帮助
它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子 就是在 Java 中输入 sout 会出现 System.out.println();
不温卜火
2020/10/28
5670
IDEA中关于模块的一些总结,希望对大家有所帮助
关于友情链接或者其他外部链接的建议
网站增加互换友链或者单相挂载他人友链是一件很正常的事,但是要做到极致,且收益最大化里面的门道还是有点的
Parker
2020/07/22
6660
关于友情链接或者其他外部链接的建议
干货篇-一些有用的链接
iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇
進无尽
2018/09/12
8190
python 嵌套list的一些小结
nested_list方法采用递归的方式,如果item是list类型,继续递归调用自身。如果不是,将item加入结果列表中即可。 flatten_list方法则是采用生成器的方式,本质上也是递归的思路。
py3study
2020/01/06
1.5K0
认知:关于超链接儿认知:关于超链接儿
认知:关于超链接儿 myself.jpg 0 网络资源极其丰富,欠缺的已经不是知识,是如何甄选知识。 出行不知道路径,你会利用搜索引擎进行查阅,或者使用地图类应用查询路径以及交通... 大众点评类帮助
谢伟
2018/06/06
1.2K0
如何帮助企业将原始长链接转换为短链接?
小码短链接是一款短链接工具,帮助企业将原始长链接转换为短链接,并可以支持短链接访问统计,可以设置自定义域名的短链接,微信朋友圈分享设置,抖音平台分享设置等功能。
用户9934601
2022/08/30
1.7K0
数据对业务价值帮助的一些思考
关于数据的价值,居士认为可以参考BI(商业智能)的定义。这里不简单地指做几张报表的工作,而是数据辅助决策。下面引用一下百度百科关于商业智能的定义。
木东居士
2019/02/28
1.1K0
关于长链接,短链接,异步,同步,单工,双工的定义
长连接:指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。 短连接:是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。 同步:报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。 异步:报文发送和接收是分开的,相互独立的,互不
lyb-geek
2018/10/24
1.7K0
query.setfirstresult_关于query接口的list
大家好,又见面了,我是你们的朋友全栈君 query.uniqueresult() 与 query.list 这2个在返回的时候,一个会多出现查询的语句,第一个会出现,第二个不会出现。
全栈程序员站长
2022/09/28
3580
关于HashMap的一些理解
本文主要补充对HashMap的一些理解、分析。相信大家对HashMap都很熟悉,但是其中的一些细节上的设计、思想,往往会被大家忽略,这些都是构成HashMap的重要组成部分,包括有"如何做hash","resize后如何保证key的位置","resize在高并发下引发的死循环","为什么 TREEIFY_THRESHOLD = 8?","允许null值的原因"等等,希望有你感兴趣的。
Erwin
2020/08/03
6950
关于框架的一些思考
如果你的团队很小并且在软件开发领域也没什么经验,那么放下包袱使用开源框架吧(OSS Framework),但是如果你有一个很大而且有丰富经验的团队,那么最好还是开发
大江小浪
2018/07/25
3300
关于lua的一些浅析
在工作中的每个代码最上面都会写个modole(“xxx”,package.seeall); 一开始不知道什么意思,module函数就是把这个lua文件变成了一个模块.后面的package.seeall的就是继承了全局环境_G,这样就能使用一系列系统函数了.看来几篇文章写的比较详细,就不自己再细写了.给下面链接看 具体可以参考这里写链接内容 这里写链接内容
渴望飞翔的猪
2022/07/17
3610
关于jdbc的一些疑问[通俗易懂]
1.为什么强调在使用jdbc时,须要在使用的时候才打开连接(Connection),用完后立刻关闭。假设我的连接(Connection)一開始就打开。在整个程序结束时才关闭,会带来什么后果呢?
全栈程序员站长
2022/07/08
1650
关于MySQL的一些基础
数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除、查询等操作。
用户9399690
2022/01/20
6420
关于MySQL的一些基础
一些关于Redis的坑
有时项目中必须使用redis==3.0版本,例如在我的项目中,celery4.3必须使用redis3.0以上的版本,所以不可能将redis降级,只能重写redis
Autooooooo
2020/11/09
5340
关于Electron的一些想法
       大概2016年的时候了解到js可以写桌面应用,当时正在用wpf/winform开发cs应用,近几年vue和react在前端的火热,以及node.js在中间层和后端的大量应用,js正在往多端,多平台方向渗透,这个对前端来说是好的,大前端的影响力越来越大。
kiki.
2022/09/29
6520
[C#]关于DataDirectory的一些思考
笔者在使用Entity Framework中的Scaffolding机制自动创建拓展名为mdf的数据库及表单时,遇到如下的错误:
CNXY
2019/05/24
7350

相似问题

关于RegEx的一些帮助

40

需要一些关于webservices的帮助

33

需要一些关于函数的帮助

413

关于一些UI代码的帮助

16

需要一些关于#define的帮助

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文