第十周

Posted mju3197103139

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十周相关的知识,希望对你有一定的参考价值。

循环双向链结表

插入元素

int insert(DList *L, ElemType e) {
  Link current = L->head; 
  Link previous = L->tail; 
  Link newNode; 
  int size = getSize(*L);
  int position=0;
  if (current==NULL) { // Case 1:当循环双向链结表为空时。 
    newNode = (Link) malloc(sizeof(Node));
    newNode->elem = e; 
    newNode->prev = newNode; 
    newNode->next = newNode; 
    L->head = newNode; 
    L->tail = newNode;  
    return position; 
  }
  
  for (position=0; position<size; position++) { 
    if (current->elem>=e) break; 
    previous = current;
    current = current->next;       
  } 
  // Cases 2, 3 & 4: 插入一个节点的 current 之前。
  newNode = (Link) malloc(sizeof(Node));
  newNode->elem = e; 
  newNode->prev = previous; 
  previous->next = newNode;  
  newNode->next = current; 
  current->prev = newNode;
  if (position==0) L->head = newNode; 
  else if (position==size) L->tail = newNode;
  return position; // 返回位置

删除元素

int delete(DList *L, ElemType e) {
  Link current = L->head; 
  Link previous = L->tail;  
  int position = 0; 
    
  if (current==NULL) return -1; 
    
  do 。
    if (current->elem==e) { 
      if (position==0) { 
        if (current->next==current) {  
          L->head = NULL; 
          L->tail = NULL; 
        }else {
          previous->next = current->next; 
          current->next->prev = previous; 
          L->head = current->next; 
        } 
        free(current); 
        return position; 
      }
      else {
        if (current->next==L->head) // 删除的是尾节点。
          L->tail = previous; 
        previous->next = current->next; 
        current->next->prev = previous;
        free(current);
        return position;
      } 
    }
    else if (current->elem<e) { // 检查下一个节点。 
      previous = current;
      current = current->next;
      position++; 
    }
   else return -1; // 目前节点数据已超过删除的值;删除失败。
   } while (current!=L->head);

   return -1; // current 回到头节点,删除失败。
}

以上是关于第十周的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 20179215《网络攻防实践》第十周作业

《网络攻防第十周作业》

2017-2018-2 20179223《网络攻防技术》第十周作业

2017-2018-2 20179207 《网络攻防技术》第十周作业

2017-2018-2 20179216 《网络攻防与实践》第十周作业

2017-2018-2 20179205《网络攻防技术与实践》第十周作业 缓冲区溢出攻防研究