打印有序链表

2023-12-11

只是做了一些编辑,我尝试了你所说的,但它不起作用,所以我尝试了一些我更熟悉的东西,但它似乎无法正常工作。它奇怪地打印信息然后崩溃。例如: 当我输入 9-8-7-6-5-4-3-2-1 然后输入 0 进行打印时,它会打印回给我 0-0-0-9-1-2-3-4-5-6- 7-8 然后就崩溃了? 当我输入 1-2-3-4-5-6-7-8-9 然后输入 0 进行打印时,它会打印回给我 0-0-0-1-2-3-4-5-6-7- 8-9 然后崩溃。

#include <stdio.h>
#include <stdlib.h>

struct listNode{
  int data;    //ordered field
  struct listNode *next;
};

//prototypes
void insertNode(struct listNode *Head, int x);
int printList(struct listNode *Head);
int freeList(struct listNode *Head, int x);

//main
int main(){
     struct listNode Head = {0, NULL};
     int x = 1;
     int ret = 0;
     printf("This program will create an odered linked list of numbers greater"
     " than 0 until the user inputs 0 or a negative number.\n");
     while (x > 0){
           printf("Please input a value to store into the list.\n");
           scanf("%d", &x);
           insertNode(&Head, x);
     }
     ret = printList(&Head);
     }
void insertNode(struct listNode * Head, int x){
     struct listNode *newNode, *current;
     newNode = malloc(sizeof(struct listNode));
     newNode->data = x;
     newNode->next = NULL;
     current = Head;
     while (current->next != NULL && current->data < x) 
     {
        current = current->next;
        }

        if(current->next == NULL){
             current->next = newNode;
        }
        else{
             newNode->next = current->next;
             current->next = newNode;
        }
}
int printList(struct listNode * Head){
    struct listNode *current = Head;
    while (Head != NULL){
          printf("%d \n", *current);
          current = current->next;
    }
}

我建议创建一个从第一个节点开始并转到下一个节点直到下一个节点为空的迭代器,并建议使用类似的 next 而不是列表末尾(或有 next)。

然后打印你简单地继续通过迭代器并打印出值。 要插入,您从头项开始,迭代并比较值。

添加了一些伪代码,因为我并不是真正的 C++ 程序员。

class iterator
{
    //provide a construction method for this
    listNode current = Head;
    listNode getValue() 
    {
        return current;
    }

    void next()
    {
        //probably want to include some checks for validity here
        current = current->next;
    }

    boolean hasNext()
    {
        return current->next != null;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印有序链表 的相关文章

随机推荐

  • 64 位堆栈驻留缓冲区溢出?

    我正在研究一些与安全相关的东西 现在我正在研究自己的堆栈 我所做的应该是非常微不足道的 我什至没有尝试执行堆栈 只是为了表明我可以控制 64 位系统上的指令指针 我已经关闭了所有我知道的保护机制 只是为了能够使用它 NX 位 ASLR 还使
  • 当存在 ngModel 时,检查 Angular 2 中的单选按钮

    在我的 Angular 2 项目中有ngModel并且单选按钮没有检查它
  • 在 mule esb 中从 JSON 中提取数组

    我正在使用 Mule 3 4 CE 并且我有一个通过 HTTP 传输的 JSON 数据 格式如下 People Details Name John Smith Email email protected Details Name Tim S
  • 在 scikit-learn 中保存新数据的特征向量

    为了创建机器学习算法 我创建了一个字典列表 并使用 scikit 的 DictVectorizer 为每个项目创建一个特征向量 然后 我使用部分数据进行训练 从数据集中创建了一个 SVM 模型 然后在测试集上测试该模型 您知道 这是典型的方
  • IE8 jQuery 淡入淡出

    HTML 标记 ul li class web span class info August 2007 a href http awebsite com visit a span a href assets image jpg class
  • Grails 控制器中操作和方法之间的差异

    据我所知 如果我想在控制器中创建一个动作 那么我可以通过以下方式完成 class My Controller def myAction println in my action 或者我可以通过以下方式创建它 class My Control
  • FragmentManager 替换使覆盖

    我正在使用 supportlib v4 来达到主从流程 问题 详细信息 片段的新实例覆盖第一个实例 创建的 xml 而不是替换它 我的活动布局是
  • 像 NSNumber 一样对 NSString stringWithFormat 进行装箱

    我们可以像这样创建一个 NSNumber NSNumber number NSNumber numberWithFloat 4 5 or NSNumber number 4 5 or NSNumber number 4 5 我知道我们可以使
  • 如果导入 iostream 为什么要使用命名空间

    我是 C 初学者 最近接触了 std 等命名空间 但是 如果像 cout 和 endl 这样的函数是在 iostream 头文件中定义的 为什么还要包含 std 命名空间呢 或者这些函数实际上是在 std 命名空间中定义的吗 如果是这样 那
  • 精度为 2 的小数的简单正则表达式

    精度为 2 的小数的正则表达式是什么 有效示例 123 12 2 56754 92929292929292 12 0 21 3 1 无效示例 12 1232 2 23332 e666 76 小数点可以是可选的 也可以包括整数 有效的正则表达
  • 如何从点列表中找到最近的坐标?

    假设我有一个 x y 坐标列表 如下所示 A 26 63 23 63 22 63 21 63 20 63 22 62 27 63 我有一个点的 x y 坐标 如下所示 leftbottom 0 238 现在 我想找到距离最近的点leftbo
  • Marshal.FreeHGlobal() 如何工作?

    我有一个基于 C 的 UI 它使用基于 C 的 DLL 我的要求是将一大块内存从 C 传递到 DLL DLL 将写入此内存缓冲区并将其传回 C 我已经使用 IntPtr 和全局内存函数来执行此操作 一切正常 问题是 如何验证 Marshal
  • 将 Inno Setup WizardForm.Color 转换为 RGB

    如果我尝试这个 Setup AppName MyApp AppVerName MyApp DefaultDirName pf MyApp DefaultGroupName MyApp OutputDir Code function Colo
  • 如何使用 Tidhttp 发出带有名为 xml 的参数的 Get 请求?

    我已成功使用 Delphi 2010 发出 http get 请求 但对于一项需要名为 xml 的参数的服务 请求失败并出现 HTTP 1 1 400 Bad Request 错误 我注意到调用相同的服务并省略 xml 参数是有效的 我尝试
  • 将文件内容重定向到php中的标准输入

    我有一个文件abc txt内容如下 hello hi good bad 现在 如何将文件的内容逐行重定向到php脚本的标准输入 这样当执行 php 脚本时 它可以通过以下任何命令收集输入 f fopen php stdin r line f
  • 视图状态 MAC 验证失败。应用程序由 Web Farm 托管,请确保 配置 [重复]

    这个问题在这里已经有答案了 Net 4 0框架 我在这个框架中制作了很多网站 但从未遇到过这样的错误 Validation of viewstate MAC failed If this application is hosted by a
  • 如何从最新版本的 Hyperledger Fabric 检索用户信息?

    我是 Hyperledger Fabric 的新手 在当前版本的 Hyperledger Fabric 中 在 chaincode go 中我找不到名为 ReadCertAttributes 的函数 有什么办法可以获取属性吗 从 Hyper
  • 返回文件或视图的方法

    我正在使用下面的 jquery 来调用GetFile方法 我想根据某些条件生成一个文本文件 这并不总是 始终生成一个文本文件 如果条件 True 生成文件 如果条件 False 返回主页 现在如果我回来 我只会得到一张空白页 我该如何写才能
  • Oracle PLSQL:xmltype.transform 与 xmltransform

    由于我们已将数据库从 11 2 0 2 0 移动到 11 2 0 4 0xmltype transform函数有特定的行为 问题是 之前它不能正常工作 它用开闭版本替换了所有标签 例如 它确实替换了 br with br 但我可以忍受 现在
  • 打印有序链表

    只是做了一些编辑 我尝试了你所说的 但它不起作用 所以我尝试了一些我更熟悉的东西 但它似乎无法正常工作 它奇怪地打印信息然后崩溃 例如 当我输入 9 8 7 6 5 4 3 2 1 然后输入 0 进行打印时 它会打印回给我 0 0 0 9