Как преобразовать интервал для обугливания с начальными нулями?

Редактировать: Кажется, у вас есть связанный список, и вы хотите сместить список влево на один узел. Ваша логика, кажется, является своего рода реализацией Array.prototype.shift .

  1. Вы сохраняете ссылку на голову (узел A)
  2. Вы устанавливаете голову, чтобы указывать на узел после текущей головы (A.next = B)
  3. Если Вы проверяете текущий заголовок, он сообщит, что это узел B
  4. Вы возвращаете значение для исходного заголовка (узел A)
  5. Сборщик мусора (GC) удаляет узел A, потому что он становится отсоединенным из списка

class Node {
  constructor(val) {
    this.val = val
    this.next = null
  }
}

class LinkedList {
  constructor(head) {
    this.head = head
  }
  add(node) {
    let start = this.head
    if (start == null) this.head = node
    else {
      while (start.next) start = start.next
      start.next = node
    }
    return this
  }
  /** Remove node from front of list and return its value */
  shift() {
    const item = this.head            // x = Z.head (A)
    this.head = this.head.next        // Z.head = A.head.next (B)
    console.log('(1)', this.head.val) // DEBUG: B <-- NEW
    return item.val                   // x.val (A -- Original head ref value)
  }
}

let listZ = new LinkedList()
  .add(new Node('A'))
  .add(new Node('B'))
  .add(new Node('C'))

console.log('(2)', listZ.shift())     // A -- No longer a node in the list
.as-console-wrapper { top: 0; max-height: 100% !important; }

91
задан 20 revs, 3 users 100% 20 April 2014 в 16:31
поделиться

3 ответа

Работы в SQLServer

declare @myNumber int = 123
declare @leadingChar varchar(1) = '0'
declare @numberOfLeadingChars int = 5

select right(REPLICATE ( @leadingChar , @numberOfLeadingChars ) + cast(@myNumber as varchar(max)), @numberOfLeadingChars)

Обладают

0
ответ дан 24 November 2019 в 06:45
поделиться

Используйте REPLICATE поэтому вам не нужно жестко кодировать все ведущие нули:

DECLARE @InputStr int
       ,@Size     int
SELECT @InputStr=123
      ,@Size=10

PRINT REPLICATE('0',@Size-LEN(RTRIM(CONVERT(varchar(8000),@InputStr)))) + CONVERT(varchar(8000),@InputStr)

ВЫХОД:

0000000123
21
ответ дан 24 November 2019 в 06:45
поделиться

Я нашел хорошую статью здесь :

Заполнение строки ведущими нулями

Мне приходилось делать это много раз при выводе данных фиксированной длины Экспорт , где, например, числовой столбец состоит из 9 символов, и вам необходимо поставить перед префикс 0.

1
ответ дан 24 November 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: