在C

时间:2015-05-12 06:38:47

标签: c linked-list

我有一个私有Node类,它跟踪一个键,值和下一个节点,将所有节点链接在一起。

然而,当我尝试声明numItems和列表的头部时,我得到一个错误,声明它们从未被声明。

    typedef struct NodeObj{
       char* key;
       char* val;
       struct NodeObj* next; 
    } NodeObj;
    typedef NodeObj* Node;

    Node newNode(char* x, char* y){
     //makes a Node N and returns N
     // x->key, y->val next->NULL
    }

    //the main class
    typedef struct ListObj{
        Node head;
        int numItems;
    } ListObj;

    List newList(void){
       List L = malloc(sizeof(ListObj));
       assert(L!=NULL);
       L->Head = NULL;
       L->numItems = 0;
       return L;
    }
    //whenever I try to reference Head or numItems I get errors stating 
    //that they haven't been declared? 

我得到的错误是

 List.c: In function'find':
 List.c:59:11: error: 'head' undeclared(first use in this function)
    Node N = head

 List.c:60: note: use option -std=c99 or -std=gnu99 to compile your code

每当我引用numItems或Head时,都会重复相同的错误,并且我使用-std = c99来编译

2 个答案:

答案 0 :(得分:0)

这里有几件事可能会出错。

  1. 列表L = malloc(sizeof(ListObj)); //这应该是一个指针类型 =>清单* L = ....

  2. List L和ListObj是不同的类型,所以甚至写 List * L = malloc(sizeof(ListObj))没有所需的效果

答案 1 :(得分:0)

sudo chmod -R 777 /opt/myenv/pysauce/static

sudo chown -R 777 /opt/myenv/pysauce/static