Нужна помощь! Даю последние баллы! Язык программирования си (с функцией main) . Надо создать односвязные/двусвязные списки. Функции: добавление элемента в начало, конец, в n-ую позицию. Очистка всего списка, очистка n-ого элемента в списке.
Умоляю, помогите!!!!
Answers & Comments
Verified answer
Відповідь:
Here's a code for a singly linked list in C:
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
struct node *head = NULL;
void addToBeginning(int data) {
struct node newNode = (struct node) malloc(sizeof(struct node));
newNode->data = data;
newNode->next = head;
head = newNode;
}
void addToEnd(int data) {
struct node newNode = (struct node) malloc(sizeof(struct node));
newNode->data = data;
newNode->next = NULL;
if(head == NULL) {
head = newNode;
return;
}
struct node *temp = head;
while(temp->next != NULL) temp = temp->next;
temp->next = newNode;
}
void addToNth(int data, int position) {
int i;
struct node newNode = (struct node) malloc(sizeof(struct node));
newNode->data = data;
if(head == NULL) {
head = newNode;
newNode->next = NULL;
return;
}
if(position == 0) {
newNode->next = head;
head = newNode;
return;
}
struct node *temp = head;
for(i=0; i<position-1 && temp!=NULL; i++) temp = temp->next;
if(temp == NULL) {
printf("Not a valid position\n");
return;
}
newNode->next = temp->next;
temp->next = newNode;
}
void clearList() {
struct node *temp;
while(head != NULL) {
temp = head;
head = head->next;
free(temp);
}
}
void clearNth(int position) {
int i;
struct node *temp, *prev;
temp = head;
if(head == NULL) {
printf("List is empty\n");
return;
}
if(position == 0) {
head = head->next;
free(temp);
return;
}
for(i=0; i<position && temp!=NULL; i++) {
prev = temp;
temp = temp->next;
}
if(temp == NULL) {
printf("Not a valid position\n");
return;
}
prev->next = temp->next;
free(temp);
}
int main() {
addToBeginning(1);
addToEnd(2);
addToEnd(3);
addToNth(4, 1);
addToNth(5, 0);
clearNth(0);
clearList();
return 0;
}
And here's a code for a doubly linked list:
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next