0
typedef struct stack_node {
   ETYPE data;
   struct stack_node *prev, *next;
}NODE;

struct seq_struct {
   // "Container" struct
   NODE* top, *bottom;
   int size;
};

void seq_add_front(Seq seq, ETYPE val){

    /* create a node to be added to the front of the sequence */
    NODE* topq = malloc(sizeof(NODE));

    topq->data = val;

if(seq->top==NULL){
    topq->prev=NULL;
    topq->next=NULL;
    seq->top = topq;
    seq->bottom=topq;

}
   else{
    topq->prev=NULL;
    topq->next=NULL;

    seq->top=topq;
    seq->bottom=topq->next;
    //seq->top=topq;


   }

   /* increment the size */
   seq->size++;

}

我需要你的帮助来理解我的 else 语句有什么问题。如果(seq->top!=NULL),我无法弄清楚如何保留以前的值。

我开始的问题是在 C 结构中的序列末尾添加元素,它被这个函数覆盖。现在我重写了它,需要想办法在添加新值的同时保持 seq->bottom 的值。

4

1 回答 1

1

我认为这就是你想要的:

   else {
    topq->prev=NULL; // make sure our prev is null
    topq->next = seg->top; // set our next to the current top
    seg->top->prev = topq; // set the current top to point back to us
    seq->top=topq; // set current top to be us
   }

注意在这个else子句中bottom不需要改变

于 2013-10-11T02:24:22.803 回答