Предмет: Информатика, автор: kumiho9fox

Нужна помощь! Даю последние баллы! Язык программирования си (с функцией main) . Надо создать односвязные/двусвязные списки. Функции: добавление элемента в начало, конец, в n-ую позицию. Очистка всего списка, очистка n-ого элемента в списке.
Умоляю, помогите!!!! ​

Ответы

Автор ответа: Аноним
1

Відповідь:

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


kumiho9fox: спасибо огромное, очень выручили!
kumiho9fox: программа выдаёт большое количество ошибок, помогите пожалуйста
Похожие вопросы