Создать список из случайных целых чисел и удалить из него отрицательные элементы - C (СИ)
Формулировка задачи:
Всем привет! Ребята помогите! Нужна ваша помощь!
"Написать программу по созданию, просмотру, добавлению и решению поставленной задачи для однонаправленного линейного списка (стек и/или очередь).
Создать список из случайных положительных и отрицательных целых чисел (от –10 до 10) и удалить из него отрицательные элементы."
Если это возможно, то с минимальными комментариями! Спасайте, сессия горит!
Решение задачи: «Создать список из случайных целых чисел и удалить из него отрицательные элементы»
textual
Листинг программы
struct Node
{ int data;
Node *next;
};
struct Stack
{ Node *begin;
};
Stack *CreateStack()
{ Stack *s = new Stack;
s->begin= NULL;
return s;
}
bool Empty(Stack *s)
{ if (s->begin == NULL)
return true;
return false;
}
void PushBack(Stack *s, int data)
{ Node *tmp = new Node;
tmp->data = data;
tmp->next = NULL;
if (Empty (s))
{ s->begin = tmp;
return;
}
Node *n1 = s->begin;
Node *n2 = s->begin->next;
while (n2 != NULL)
{ n1 = n1->next;
n2 = n2->next;
}
n1->next = tmp;
}
void PopFront(Stack *s)
{ if (Empty (s))
return;
Node *tmp = s->begin;
s->begin = s->begin->next;
delete tmp;
}
int Top(Stack *s)
{ return s->begin->data;
}
void Print(Stack *s)
{ Node *tmp = s->begin;
while (tmp != NULL)
{ printf("%5d", tmp->data);
tmp = tmp->next;
}
printf("\n");
}
void Clear(Stack *s)
{ Node *tmp = s->begin;
while (s->begin != NULL)
PopFront(s);
}
Объяснение кода листинга программы
Код представляет собой реализацию односвязного стека с использованием структуры Node. Список из случайных целых чисел создаётся во вспомогательной функции FillStack. В ней используется цикл, который заполняет стек значениями, полученными из функции rand(). Каждое сгенерированное число проверяется на отрицательность, и если оно положительное, то добавляется в стек с помощью функции PushBack. Если же число отрицательное, то оно пропускается. После заполнения стека значениями, функция Clear удаляет все элементы из стека. Далее, в функции Main, создаётся экземпляр стека, заполняется списком из случайных целых чисел с помощью функции FillStack, и выводится на экран с помощью функции Print.