链表--单向链表

刺骨的言语ヽ痛彻心扉 2021-12-03 06:45 530阅读 0赞

单向链表实现

  1. class Node {
  2. constructor(element) {
  3. this.element = element;
  4. this.next = null;
  5. }
  6. }
  7. class LinkedList {
  8. constructor() {
  9. this.head = new Node('head');
  10. }
  11. find(element) {
  12. let currentNode = this.head;
  13. while (currentNode && currentNode.element) {
  14. if (currentNode.element === element) {
  15. return currentNode;
  16. } else {
  17. currentNode = currentNode.next;
  18. }
  19. }
  20. return null;
  21. }
  22. insert(element, newElement) {
  23. const currentNode = this.find(element);
  24. if (!currentNode) {
  25. throw new Error('未查找到元素');
  26. }
  27. const insertNode = new Node(newElement);
  28. insertNode.next = currentNode.next;
  29. currentNode.next = insertNode;
  30. }
  31. findPre(element) {
  32. let preNode = this.head;
  33. while (preNode.next && preNode.next.element !== element) {
  34. preNode = preNode.next;
  35. }
  36. if (!preNode.next) {
  37. throw new Error('没有找到要删除的节点');
  38. }
  39. return preNode;
  40. }
  41. remove(element) {
  42. const preNode = this.findPre(element);
  43. preNode.next = preNode.next.next;
  44. }
  45. display() {
  46. let currentNode = this.head;
  47. const result = [];
  48. do {
  49. result.push(currentNode.element);
  50. currentNode = currentNode.next;
  51. } while (currentNode);
  52. return result.toString();
  53. }
  54. }
  55. const list = new LinkedList();
  56. list.insert('head', 'second');
  57. list.insert('second', 'third');
  58. list.insert('second', 'four');
  59. console.log(list.display());
  60. list.remove('second');
  61. console.log(list.display());

转载于:https://www.cnblogs.com/shangyueyue/p/10911889.html

发表评论

表情:
评论列表 (有 0 条评论,530人围观)

还没有评论,来说两句吧...

相关阅读

    相关 单向

    单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。

    相关 单向

    一:单向链表 单向链表中的节点包含数据域和next指针域。 ![20210306162342140.png][] 单向链表的增删查改代码实现 Hero