【发布时间】:2013-10-10 05:22:12
【问题描述】:
#include "seq.h"
#include <stdio.h>
#include <stdlib.h>
typedef struct stack_node {
ETYPE data;
struct stack_node *prev, *next;
}NODE;
struct seq_struct {
// "Container" struct
NODE* top, *bottom;
int size;
};
/**
* DESCRIPTION: adds a new element to the "back" of
* the seq
*
* [2 4]
* add_back 7
* [2 4 7]
*
*
*/
void seq_add_back(Seq seq, ETYPE val){
NODE* endq = malloc(sizeof(NODE));
endq->next =NULL;
endq->prev = seq->bottom;
endq->data = val;
seq->bottom->next=endq;
seq->bottom = endq;
seq->size++;
return;
}
我需要您的帮助来了解我的代码有什么问题。它不会像应有的那样在最后的序列中添加新元素。
我还有另一部分代码,用于在序列的前面删除和添加元素,它工作正常,还要注意打印功能也很好。一切都被初始化为 NULL,并在程序开始时为零。
【问题讨论】:
-
这是正确的代码。
Seq是 structseq_struct的类型定义? -
添加代码的其他部分,可能代码的其他部分会破坏您在调用
seq_add_back()函数之前调用的序列列表 -
问:seq 是指向你的“Sequence”记录的指针吗?您没有传递副本(从未更新的副本),是吗?问:添加 first 记录会发生什么情况?一定要在调试器下单步执行 seq_add_back():也许您遇到的 ACTUAL 问题在别处。恕我直言... PS:您不需要在 void 函数中“返回”。
-
我只看到一个缺陷:如果您传入的序列为空,则无需特殊处理。你能展示调用这个函数的程序吗?
标签: c struct sequence typedef seq