Форум программистов, компьютерный форум CyberForum.ru

Абстрактные структуры данных - C++

Восстановить пароль Регистрация
 
Iliabobr
3 / 3 / 1
Регистрация: 04.11.2009
Сообщений: 98
06.12.2012, 06:18     Абстрактные структуры данных #1
добрый вечер всем. Не понимаю как реализовать функцию insert(x,p,L), где элемент х вставляется в позицию р списка L, смог добиться только удаления элементов.
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
87
88
89
90
91
92
// linklist.cpp
// список
#include <iostream>
#include <conio.h>
using namespace std;
///////////////////////////////////////////////////////////
struct link   // один элемент списка
{
  int data;   // некоторые данные
  link* next; // указатель на следующую структуру
} ;
///////////////////////////////////////////////////////////
class linklist // список
{
  private:
    link* first;
  public:
    linklist ( )            // конструктор без параметров
      { first = NULL; }     // первого элемента пока нет
    void additem ( int d ); // добавление элемента
    void display ( );       // показ данных
    void del(int p); // функция удаления
};
///////////////////////////////////////////////////////////
void linklist::additem ( int d ) // добавление элемента
{
  link* newlink = new link;      // выделяем память
  newlink->data = d;             // запоминаем данные
  newlink->next = first;         // запоминаем значение first
  first = newlink;               // first теперь указывает на новый элемент
}
///////////////////////////////////////////////////////////
void linklist :: del(int p)
     {
    link* current = first;
    link*  pred;                             // указывает на начало
      int k=0;
    while(current) // выход по достижении последнего элемента
    {
         pred=current;
        current = current->next; // следующая ссылка
         k++;
         if (k==p)
         { pred->next=current->next;
         delete current;
         break;
         }
 
    }
}
 
 
///////////////////////////////////////////////////////////
void linklist::display ( )
{
  link* current = first;           // начинаем с первого элемента
  while( current )                 // пока есть данные
  {
    cout << current->data << endl; // печатаем данные
    current = current->next;       // двигаемся к следующему элементу
  }
}
///////////////////////////////////////////////////////////
 
 
///////////////////////////////////////////////////////////
int main ( )
{   int el,n,k;
  linklist li;       // создаем переменную-список
  cout<<"input number of element";
  cin>>n;
 
  while (n>0)
  {
     cout<<"input current element";
     cin>>el;
     li.additem ( el ); // добавляем туда несколько чисел
     n--;
  }
 /* li.additem ( 25 ); // добавляем туда несколько чисел
  li.additem ( 36 );
  li.additem ( 49 );
  li.additem ( 64 );    */
 
  li.display ( );
   cout<<"delet element";
     cin>>k;             // показываем список
  li.del(k); // удаляем
    li.display ( );
   getch();
  return 0;
}
Добавлено через 3 часа 7 минут
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
//---------------------------------------------------------------------------
// linklist.cpp
// список
#include <iostream>
#include <conio.h>
using namespace std;
///////////////////////////////////////////////////////////
struct link   // один элемент списка
{
  int data;   // некоторые данные
  link* next; // указатель на следующую структуру
} ;
///////////////////////////////////////////////////////////
class linklist // список
{
  protected:
 link* FTop;
 int FCount;
  private:
    link* first;
  public:
    linklist ( )            // конструктор без параметров
      { first = NULL; }     // первого элемента пока нет
    void additem ( int d ); // добавление элемента
    void display ( );       // показ данных
    //void del(int p); // функция удаления
    void insert (int a,link* p);
};
///////////////////////////////////////////////////////////
void linklist::additem ( int d ) // добавление элемента
{
  link* newlink = new link;      // выделяем память
  newlink->data = d;             // запоминаем данные
  newlink->next = first;         // запоминаем значение first
  first = newlink;               // first теперь указывает на новый элемент
}
///////////////////////////////////////////////////////////
/*void linklist :: del(int p)
     {
    link* current = first;
    link*  pred;                             // указывает на начало
      int k=0;
    while(current) // выход по достижении последнего элемента
    {
         pred=current;
        current = current->next; // следующая ссылка
         k++;
         if (k==p)
         { pred->next=current->next;
         delete current;
         break;
         }
 
    }
}           */
void linklist::insert (int a, link* p)
{
 
 link* work, *work1, *work2;
 work = FTop;
 while (work->next->next != p)
 work = work->next;
 work2 = work->next;
 work1 = new link;
 work1->data = a;
 work1->next = work2;
 work = work1;
 FCount++;
}
 
 
///////////////////////////////////////////////////////////
void linklist::display ( )
{
  link* current = first;           // начинаем с первого элемента
  while( current )                 // пока есть данные
  {
    cout << current->data << endl; // печатаем данные
    current = current->next;       // двигаемся к следующему элементу
  }
}
///////////////////////////////////////////////////////////
 
 
///////////////////////////////////////////////////////////
int main ( )
{   int el,n,k;
  linklist li;     // создаем переменную-список
  cout<<"input number of element";
  cin>>n;
  while (n>0)
  {
     cout<<"input current element";
     cin>>el;
     li.additem ( el ); // добавляем туда несколько чисел
     n--;
  }
 /* li.additem ( 25 ); // добавляем туда несколько чисел
  li.additem ( 36 );
  li.additem ( 49 );
  li.additem ( 64 );    */
 
  li.display ( );
   cout<<"vvod adresa";
     cin>>k;           // показываем список
  li.insert(9,k);
    li.display ( );
   getch();
  return 0;
}
почти уверен что функция инсерт правильна, но задействовать ее не могу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 06:18     Абстрактные структуры данных
Посмотрите здесь:

абстрактные типы данных "СТЕК" и "ОЧЕРЕДЬ" C++
C++ Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Структуры. Вызов данных структуры по указателю. с++ C++
C++ ООП.Разработать структуру элементов данных класса в виде динамической структуры данных
Абстрактные типы данных C++
C++ Понятие структуры данных. Элементарные структуры данных. Простые структуры данных
Структуры данных (создание, просмотр, дополнение и извлечения данных из файла, содержащего информацию о номерах телефонов сотрудников учреждения,ФИО) C++
Абстрактные типы данных. Струкутра C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кристина2012
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 14
Записей в блоге: 1
01.06.2014, 16:03     Абстрактные структуры данных #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
// templist.cpp 
// Шаблон связанных списков 
#include <iostream> 
using namespace std; 
/////////////////////////////////////////////////////// 
template<class TYPE> //структура link<TYPE> 
struct link //элемент списка 
//( внутри этой структуры определение link означает 
// link<TYPE> ) 
{ 
TYPE data; //элемент данных 
link* next; //указатель на следующий элемент 
}; 
/////////////////////////////////////////////////////// 
template<class TYPE> //класс linklist<TYPE> 
class linklist //список ссылок 
//(внутри этого класса linklist означает linklist<TYPE>) 
{ 
private: 
link<TYPE>* first; //указатель на первую ссылку 
public: 
linklist() //конструктор без аргументов 
{ first = NULL; } //первой ссылки нет 
void additem(TYPE d); //добавить данные (одна ссылка) 
void display(); //вывести все ссылки 
}; 
template<class TYPE> 
void linklist<TYPE>::additem(TYPE d)
 //добавление данных 
{ 
link<TYPE>* newlink = new link<TYPE>; //создать новую ссылку 
newlink->data = d; //занести туда данные 
newlink->next = first; 
first = newlink; //теперь первая ссылка указывает на данную ссылку 
} 
//----------------------------------------------------- 
template<class TYPE> 
void linklist<TYPE>::display() //вывод всех ссылок 
{ 
link<TYPE>* current = first; //указатель – на первую ссылку 
while( current != NULL ) //выйти после последней ссылки 
{ 
cout << endl << current->data; //вывести на экран 
current = current->next;  //сдвинуться на следующую ссылку 
} } 
int main() 
{ 
linklist<double> ld; //ld - объект linklist<double> 
ld.additem(151.5);   //добавить три числа double в список ld 
ld.additem(262.6); 
ld.additem(373.7); 
ld.display(); //вывести весь список ld 
***
cout << endl; 
return 0; 
}
Yandex
Объявления
01.06.2014, 16:03     Абстрактные структуры данных
Ответ Создать тему
Опции темы

Текущее время: 09:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru