Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct list
- {
- int field; // поле данных
- struct list *ptr; // указатель на следующий элемент
- };
- struct list * init(int a) // а - значение первого узла, функция назначения первого узла списка
- {
- struct list *lst;
- // выделение памяти под корень списка
- lst = (struct list*)malloc(sizeof(struct list));
- lst->field = a;
- lst->ptr = NULL; // это последний узел списка
- return(lst);
- }
- struct list * addelem(list *lst, int number)
- {
- struct list *temp, *p;
- temp = (struct list*)malloc(sizeof(list));
- p = lst->ptr; // сохранение указателя на следующий узел
- lst->ptr = temp; // предыдущий узел указывает на создаваемый
- temp->field = number; // сохранение поля данных добавляемого узла
- temp->ptr = p; // созданный узел указывает на следующий элемент
- return(temp);
- }
- void showlist(list *lst){
- struct list *p;
- p = lst;
- if (p != NULL) {
- cout << p->field << " ";
- showlist(p->ptr); // Рекурсия
- }
- }
- void FindBiggest(list *lst, int last_biggest) {
- struct list *p;
- p = lst;
- if (p != NULL) {
- if (p->field >= last_biggest) {
- FindBiggest(p->ptr, p->field);
- }
- else {
- FindBiggest(p->ptr, last_biggest);
- }
- }
- else
- cout << "Наибольший элемет = " << last_biggest << endl;
- }
- int sum(list *lst, int s) {
- struct list *p;
- p = lst;
- if (p == NULL) {
- return s;
- }
- else {
- sum(p->ptr, s + p->field);
- }
- }
- int main() {
- setlocale(LC_ALL, "rus");
- system("color F0");
- struct list* l2 = init(0);
- int Length = 0;
- cout << "Введите нужное число элементов списка: ";
- cin >> Length;
- for (int i = 0; i < Length; ++i) {
- cout << "Введите значение: ";
- int TempField = 0;
- cin >> TempField;
- struct list* temp = addelem(l2, TempField);
- }
- showlist(l2);
- cout << endl;
- FindBiggest(l2, l2->field);
- cout << "Сумма элементов списка = "<<sum(l2, l2->field)<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement