Какова будет сложность операции по удалению элемента из конца односвязного списка?Я реализовал связанный список в C. Вот код для удаления элемента из конца связанного списка.Теперь мой вопрос заключается в том, как рассчитать сложность этого фрагмента.Какие факторы участвуют.Есть и другие операции, такие как
- Вставка в начале
- Вставка в середине
- Вставка в конце
- Удаление в начале, середине, конце
- Перевернуть список
Как я смогу их вычислить?
struct node {
int val;
struct node * next;
};
typedef struct node item;
item * head = NULL;
/* DELETION AT THE END OF THE LIST */
deleteatend() {
item * temp, * curr;
if(head == NULL) {
printf("\n Linked list is Empty ");
return;
}
temp = head;
if(head->next == NULL) { /* When There is atleast 1 NODE */
head=NULL;
}
else {
while(temp->next != NULL) { /* Traversing the list upto second-last NODE */
curr=temp;
temp=temp->next;
}
curr->next =NULL; /* When TEMP points to last NODE */
}
free(temp);
}
код для Перевернуть список:
/* Reverse Printing of list */
reverselist() {
item * curr, * nextnode, * prev;
curr = head;
nextnode = curr-> next; /* NEXTNODE traverses till the end of the list */
prev = NULL;
curr-> next = NULL; /* Making the first Node as Last node */
while(nextnode != NULL) {
prev = curr; /* Generally holding the last element of the reversed list */
curr = nextnode;
nextnode = curr-> next;
curr-> next = prev;
} /* End of WHILE */
head = curr;
}