[英]Deleting and appending list from a linked list
我想删除一个列表,并附加前端和后端列表并生成一个新列表。 我有以下两种结构:
typedef struct term {
SYMBOL symbol;
union {
LIST termlist;
struct term* term;
} super;
LIST args;
NAT stamp;
NAT size;
} *TERM, TERM_NODE;
typedef struct LIST_HELP {
struct LIST_HELP *cdr;
POINTER car;
} LIST_NODE;
typedef LIST_NODE *LIST;
使用这两种结构,我有一个像这样的术语:
forall([X8,X9],implies(connected(X8,X9),exists([V],and(or(equal(h_1(X8),U),equal(h_2(X8),U)),connected(U,X9)))
这里都是符号。 假设如果forall
是一个符号,那么其余的将作为forall
的参数。 这是一种Term
另一组成的Term
。 我想从中删除[V]
并在列表前后添加列表。 你能告诉我我会怎么做吗?
可能是功课; 因此,假设您有一个列表LIST l1
,则通过l1->cdr
找到它的l1->cdr
。 现在:要从列表中删除一个条目,您要执行的操作是将cdr的cdr设置为当前的cdr,如下所示:
l1->cdr = (l1->cdr)->cdr;
您实际上已删除了l1->cdr
先前的条目。 还需要做的是记住l1->cdr
先前值,以便释放它使用的内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.