Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- #include <locale>
- #include <stdlib.h>
- #include <time.h>
- using namespace std;
- //По убыванию значения информационного поля однонаправленный список.
- //Вставить К элементов так, чтобы порядок сохранился.
- ifstream f("A.txt",ios::in);
- struct point{
- int data;
- point* next;
- };
- void print_list(point* beg)
- //печать списка
- {
- point* p = beg;//начало списка
- while (p != 0)
- {
- cout << p->data << "\t";
- p = p->next;//переход к следующему элементу
- }
- }
- point* make_list(int n)
- {
- point*beg;//указатель на первый элемент
- point*p, *r, *d;//вспомогательные указатели
- beg = new(point);//выделяем память под первый элемент
- cout << "Информационное поле ?" << endl;
- f >> beg->data;//вводим значение информационного поля
- beg->next = 0;//обнуляем адресное поле
- for (int i = 0; i < n-1; i++){
- p = beg;
- r = new(point);
- f >> r->data;
- r->next = NULL;
- if (r->data < beg->data){
- while (p->next != NULL && r->data < p->next->data){
- p = p->next;
- }
- r->next = p->next;
- p->next = r;
- }
- else{
- r->next = beg;
- beg = r;
- }
- }
- return beg;
- }
- point* add(point* beg,int n){
- point* r = new(point);
- r->data = n;
- r->next = NULL;
- point* p;
- p = beg;
- while (p->next != NULL && n < p->next->data){
- p = p->next;
- }
- r->next = p->next;
- p->next = r;
- return beg;
- }
- void main(){
- setlocale(LC_ALL, "rus");
- int n,K,a;
- char* N;
- cout << "Введите кол-во элементов" << endl;
- f >> n;
- point* beg = make_list(n);
- cout << "Исходный список : " << endl;
- print_list(beg);
- cout << endl;
- cout << "K ?" << endl;
- cin >> K;
- for (int i = 0; i < K; i++){
- cout << "Chislo ?" << endl;
- cin >> a;
- beg = add(beg, a);
- }
- cout << endl;
- cout << "Список после обработки : " << endl;
- print_list(beg);
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment