繁体   English   中英

从链接列表中删除和追加列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM