Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Demon0811
0 / 0 / 1
Регистрация: 12.05.2014
Сообщений: 8
1

Работа со списком (копирования и реверс списка)

26.11.2014, 02:07. Просмотров 405. Ответов 0
Метки нет (Все метки)

Описать функцию, которая формирует список М1 - копию списка М и список М2, представляющий собой ”перевернутый” список М. Не получается сделать копию списка, выдает какой-то бред. Помогите пожалуйста. Заранее спасибо.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdlib.h>
#include <stdio.h>
 #include <conio.h>
typedef struct st { // элемент
    int info;   // элемент хранения
        struct st *prev;    // указатель на следующий элемент
        } ELEMENT;
void add(ELEMENT **head, int item); // поместить item в
ELEMENT* my_copy(ELEMENT* head);
void print_list(ELEMENT *head);
ELEMENT *reverse (ELEMENT *head);
 
 void clear(ELEMENT **head);
 
int main(){   ELEMENT *head = NULL; ELEMENT *new_head = NULL;
  int i,value;
 
    for (i = 0; i< 4; i++){
    printf("Vvedite element %d:", i+1);
        scanf("%d",&value);
        add(&head,value);   }
 
      puts("Spisok M");
              print_list(head);
              puts("\nSpisok M2:");
              print_list(reverse (head));
              puts("\nSpisok M1:");
              while(head){
            print_list(my_copy(head));
            }
               clear(&head);
                return 0; }
 
void add(ELEMENT **head, int item){ // поместить item в список
 ELEMENT * new_item;
  new_item = (ELEMENT *) malloc( sizeof (ELEMENT) );//выделяем память под новый элемент
    new_item -> info = item; // присваиваем значение новому элементу
      new_item -> prev = *head; // присоединяем новый элемент на вершину
         *head = new_item; }
 
void print_list(ELEMENT *head){
  while (head){
    printf("%d ",head->info);
       head = head->prev;   } }
 
void clear(ELEMENT **head){
 ELEMENT *element;
 while (*head){
  element = *head;
     *head = (*head)-> prev;
         free(element);   } }
 
 
   ELEMENT* my_copy(ELEMENT *head){
 
    ELEMENT *i_ptr = head;
    ELEMENT *cp_ptr;
 
    cp_ptr = (ELEMENT *) malloc( sizeof (i_ptr->info,i_ptr->prev) );
 
    ELEMENT *new_head = cp_ptr;
    while( i_ptr->prev != NULL ){
 
        cp_ptr->prev = (ELEMENT *) malloc( sizeof (i_ptr->prev->info,i_ptr->prev->prev) );
 
        i_ptr = i_ptr->prev;
        cp_ptr = cp_ptr->prev;
 
    }
 
    return new_head;
}
 
ELEMENT *reverse (ELEMENT *head)
{
  ELEMENT *rlist = NULL, *t;
 
  while (head) {
    t = head;
    head = head->prev;
    t->prev = rlist;
    rlist = t;
  }
 
  return rlist;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 02:07
Ответы с готовыми решениями:

Работа с двусвязным нециклическим списком: инверсия списка
Есть программа для работы с двухсвязным списком. Есть проблемы с функцией инверсии списка. Visual...

Реверс списка
Есть односвязный список. Требуется создать реверс списка, после чего продлить основной список этим...

Реверс списка
Язык Scheme R5RS Определить процедуру revers, которая по заданному списку строит новый список,...

Реверс списка
функция должна возвращать список с элементами, перечисленными в обратном порядке.

Реверс списка
Скажите пожалуйста правильна ли логика реверса void IntList::Revers() { ListItem *tmp, *ptr...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 02:07

Работа со списком...Не могу добавить функцию добавить элементы в начало списка...
В моей программе есть функция добавить элементы, она добавляет элементы в конец списка, уже очень...

Реверс двусвязного списка
Столкнулся с задачей написать функцию реверса двусвязного списка. Часа 3 сушил себе мозг с копиями...

Реверс списка списков
Доброй ночи . Реверсируем список списков fun (x:xs) = (reverse x) : fun xs main = do print...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru