Первый insert(2,1)
работает нормально. Итак, у вас есть связанный список, подобный этому
(2)->NULL
|
head
Во второй вставке, давайте следовать за кодом,
1. else
2. {
3. node* ptr = head;
4. for (int i = 1; i <= n - 1; i++)
5. ptr = ptr->link;
6. temp->link = ptr->link;
7. ptr->link = temp;
8. }
Строка 3, ptr
указывает на head
. n
равно 2
(2)->NULL
|
head
|
ptr
Строка 4, 1 <= (2-1)
- true
, потому что 1 == 1
, поэтому для цикла выполняется один раз
Строка 5, ptr
перемещается на один шаг, поэтому он указывает на NULL
(2)->NULL
| |
head |
|
ptr
Строка 6, называется ptr->link
, то есть NULL->link
. Так что он падает здесь.
Когда вы делаете for(int i=0;i<n-2;i++)
, n
равно 2, поэтому 0 < (2-2)
равно false
, поэтому работает нормально. Примечание. Работает только в том случае, если вызовы вставок выполняются в порядке, подобном вашему примеру. Если они вызваны в неправильном порядке, это не сработает.
Изменение строки 6 на temp->link = ptr;
также должно работать без изменения цикла.
Самый легкий путь состоит в том, чтобы установить Аутентификацию HTTP сверху gitweb. Посмотрите там.
Аутентификация HTTP не защитит пакет, передаваемый по проводу, поэтому если Вы будете волноваться по поводу Аутентификации HTTP соглядатаев, то не будет достаточен. Кроме того, мерзавец является намного более эффективным использованием протокола мерзавца, чем протокол HTTP. мерзавец-демон, однако, не делает аутентификации для Вас.
Вероятно, лучшее решение состоит в том, чтобы использовать gitosis, который позволит Вам защищать репозиторий с помощью ssh - криптографически устойчивую аутентификацию, и конфиденциальность по проводу - и доступ управления к репозиторию также (например, иметь некоторое пользовательское чтение-запись и некоторых пользователей, только для чтения). Это будет использовать эффективный протокол мерзавца по Вашему соединению SSH.
Если Вы готовы произвести это на стороне, GitHub является, возможно, лучшим подходом. У них есть планы по различным стандартным ценам для удовлетворения многих потребностей.
Можно выбрать через SSH, который и аутентифицируется и зашифрованный канал. Я не знаю, помог ли gitosis Вам управлять доступом SSH вместо установки учетных записей с доступом через оболочку с оболочкой мерзавца как оболочка.
Чтобы создать аутентифицированный репозиторий «только для чтения», предоставьте SSH-доступ к репозитории для всех применимых сторон, но разрешены только push-запросы (доступ для записи) в подборку сторон, используя кнопку UPDATE AS вышел здесь .