使用指针在单个链表上工作

时间:2012-04-15 18:40:14

标签: c++

这是一个家庭作业问题。该程序已成功构建,但无法运行。它刚刚停止。我试图使用“struct”来制作一个列表。我不知道我的“插入”功能有什么问题。这是我第一次来这里,希望我会得到一些建议。

//============================================================================
// Name        : test2.cpp
// Author      : yan zeng
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef int BOOLEAN;
using namespace std;

struct Node {
    int value;
    struct Node *next;
};

void insert(int x, struct Node **pL);

void insert(int x, struct Node **pL){

    if (*pL == NULL) {
        struct Node **pL = (struct Node **) malloc(10 * sizeof(int *));

        (**pL).value = x;
        (*pL)->next = NULL;

    }

    else
        insert(x, &((*pL)->next));

}



int main (int argc, char **argv)
{

    // insert code here...

    //    make a list by declaring a pointer to a node

    struct Node *NodePointer = NULL;



    for (int i=3; i<20; i+=2) {
        insert(i,&NodePointer);
    }



}

2 个答案:

答案 0 :(得分:0)

我能给你的最好建议是学习如何使用调试器。其他建议:不要在C ++中使用malloc/free,请使用new/delete

答案 1 :(得分:0)

此代码中存在相当多的问题,使用调试器肯定会有所帮助。

你的程序“停止”因为它在

崩溃了
(**pL).value = x;

我不确定此代码是否作为修复作业提供给您,或者是否提供了空功能,您需要填写它。无论哪种方式,这条线都是错误的。

此外,正如其他人所提到的,当您使用malloc时,您在C ++程序中使用new