llist.x

来自「经典c++程序的实现」· X 代码 · 共 47 行

X
47
字号
list::list(const int sz)       // Constructor -- Ignore sz
  { tail = head = curr = new link; }  // Create header node

list::~list() {                // Destructor
  while(head != NULL) {        // Return link nodes to free store
    curr = head;
    head = head->next;
    delete curr;
  }
}

void list::clear() {           // Remove all ELEMs from list
  while (head->next != NULL) { // Return link nodes to free store
    curr = head->next;         //   (keep header node)
    head->next = curr->next;
    delete curr;
  }
  curr = tail = head;          // Reinitialize
}

// Insert ELEM at current position
void list::insert(const ELEM& item) {
  assert(curr != NULL);       // Must be pointing to list ELEM
  curr->next = new link(item, curr->next);
  if (tail == curr)           // Appended new ELEM
    tail = curr->next;
}

void list::append(const ELEM& item) // Insert ELEM at tail of list
  { tail = tail->next = new link(item, NULL); }

ELEM list::remove() {              // Remove and return current ELEM
assert(isInList());              // Must be valid position in list
   ELEM temp = curr->next->element; // Remember value
   link* ltemp = curr->next;        // Remember link node
   curr->next = ltemp->next;        // Remove from list
   if (tail == ltemp) tail = curr;  // Removed last ELEM: set tail
   delete ltemp;                    // Send link to free store
   return temp;                     // Return value removed
}
 
void list::setFirst()              // Set curr to first position
   { curr = head; }
 
void list::next()                  // Move curr to next position
   { if (curr != NULL)  curr = curr->next; }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?