Tag: data structures

通过引用传递链接列表时,在第n个位置添加元素

我是新链接列表这是我在LL中插入元素后的第二个问题。现在我试图在第n个位置插入元素。 我这样做: (1)首先在终端上取用户的大小。 (2)第二次从用户连续读取输入直到大小。 (3)我在LL的开头添加了在终端读取的元素。 (4)我打印出LL直到形成。 直到这里一切正常 (5)之后我尝试在LL的第n个位置添加,但是它给出了3个错误我已经在我的代码中的注释中解释了。 还请告诉我,我在第n个位置添加元素的逻辑是否正确? 注意: 我有义务仅在函数调用中传递List节点作为引用(并在函数定义中取消引用它们) 下面是我的完整代码,指出评论中的错误。 #include #include #include #include struct node { int freq; struct node * next; }; typedef struct node node; ///////////////////////////// Function definitions //////////////////////////////////////// insert_beginning(int size, node * * head) { node * temp; temp = (node * ) malloc(sizeof(node)); temp -> freq = size; […]

使用C中的另一个变量命名变量

我想创建一个包含2个变量的结构,例如 struct myStruct { char charVar; int intVar; }; 我将这些结构命名为: struct myStruct name1; struct myStruct name2; 等等 问题是,我不知道将输入多少变量,因此必须有无限的nameX结构。 那么,我如何用变量命名这些结构呢? 谢谢。

C编程链接列表删除位置N处的节点

编辑:找出问题所在。 此外,如果你通过谷歌或其他搜索引擎发现这是我出错的地方以及如何解决它。 我的deleteNode()方法正确地使用正确的temp移动列表并保持头部不变。 我出错的地方是因为该方法的结果我正在返回。 我正在返回temp或newNode,这是不正确的,因为它通过列表直到找到定义的位置。 一旦找到定义的位置,它就会重新分配 – > next指针指向next-> next>指针,这是正确的,但我又回到了错误的位置。 因为我们使用temp / NewNode移动了列表,所以我们丢失了标题,我们返回了我们找到的位置以及列表中下一个位置的任何位置。 我们如何解决这个问题就是返回头部(这是传递给方法的内容)。 这之所以有效,是因为我们必须了解LinkedLists的工作原理。 每个节点的指针指向下一个节点。 防爆。 我们有一个链表| A | | – | B | | – | C | | – | D | | – | E | | – | F | | 如果我们要删除Node C,我们使用temp指针移动到节点B,然后在temp-> next-> next旁边分配B->从而跳过C节点并分配D节点。 注意:(据我所知,这实际上并没有释放C节点的内存,所以这不是最佳实践,因为你可以通过这种方式导致内存泄漏)你应该在C节点上使用free()方法。 这是我最终使用的代码 struct node* DeleteNode(struct […]