如何在此结构的定义中指向下一个结构的指针:
typedef struct A {
int a;
int b;
A* next;
} A;
Run Code Online (Sandbox Code Playgroud)
这是我第一次写它但它不起作用的方式.
请考虑以下C代码段:
typedef struct node{
int val;
struct node* left;
struct node* right;
}node;
void inorderTraversal(node *p){
inorderTraversal(p->left);
printf("%d",p->val);
inorderTraversal(p->right);
}
Run Code Online (Sandbox Code Playgroud)
如果我只写typedef struct,而不是typedef struct node,我得到一个警告说"通过兼容的指针类型的参数"当我打电话inorderTraversal(root)在main().为什么即使程序没有显示任何错误,我也会收到此警告?
是否可以定义一个带有指向该类型结构的指针的结构?我的意思是:
typedef struct {
char* name;
node* parent;
} node;
Run Code Online (Sandbox Code Playgroud)
就我尝试或阅读而言,我不知道该怎么做或者甚至可能.
struct node{
struct node next;
int id;
}
Run Code Online (Sandbox Code Playgroud)
给出"下一个字段有不完整的类型错误".
这个结构有什么问题?
我一直在理解这个结构发生了什么(来自C for ProgrammersDeitel的书).
该书说:"结构不能包含自身的实例.例如,struct employee不能在定义中声明类型的变量struct employee.但是,可以包含指向struct employee的指针."
然后给出以下示例:
struct employee2 {
char firstName[ 20 ];
char lastName[ 20 ];
unsigned int age;
struct employee2 *ePtr;
};
Run Code Online (Sandbox Code Playgroud)
我不明白这是做什么的,我不明白struct employee没有2 的参考.
我怎么struct employee2 *ePtr知道struct employee或者我不在这里?
我是否需要使用typedef才能构建递归结构?我尝试使用以下代码但没有成功:
struct teste
{
int data;
int data2;
struct teste to_teste;
};
Run Code Online (Sandbox Code Playgroud) 这段代码中的错误是什么?为什么我不能按照我尝试的方式取消引用元素.
#include<stdio.h>
typedef struct
{
int value;
struct node * left;
struct node * right;
} node;
int main() {
node* root,*temp;
root = (node*) malloc(sizeof(node));
root->value = 10;
(root->left)= (node*) malloc(sizeof(node));
(root->right)=(node*) malloc(sizeof(node));
((root->left)->value) =20; // WHY AN ERROR HERE???
}
Run Code Online (Sandbox Code Playgroud) 编辑:这个结构是真正糟糕的设计,不要使用它!
是否可以在C++ 11中初始化一个指向对象的指针列表(同时初始化所有内容)?
例如,假设我想要创建my_list哪种类型:
list<pair<string, map<string, string> *> *>.
我想用原始值初始化它.
list<pair<string, map<string, string> *> *> my_list = { ??? }
???:创建新的指针到新的对原始字符串和新指针的原始字符串的地图.
(为什么我需要这样做:这个数据结构存储从文件中读取的配置,但如果找不到该文件,我的代码中需要一个默认值)
#include <stdio.h>
#include <stdlib.h>
#define MAX_ELEMENT 100
typedef struct TreeNode{
int weight;
TreeNode *left_child;
TreeNode *right_child;
} TreeNode;
typedef struct element{
TreeNode *ptree;
int key;
} element;
typedef struct HeapType{
element heap[MAX_ELEMENT];
int heap_size;
} HeapType;
Run Code Online (Sandbox Code Playgroud)
我得到了错误:
error: unknown type name ‘TreeNode’
TreeNode *left_child;
error: unknown type name ‘TreeNode’
TreeNode *right_child;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么……你能解释一下吗?
struct LinkedList
{
int data;
struct LinkedList *next;
};
Run Code Online (Sandbox Code Playgroud)
在代码中,在定义中struct LinkedList有一个指向结构本身的指针.
它是如何工作的?