![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
КэтринМ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.1.2013 Репутация: нет Всего: нет |
помогите,пожалуйста))
задача:1. Вывод списка. Выводятся все элементы в соответствии с их порядком расположения в списке. 2. Вставка элемента в заданную позицию списка. Эта функция вставляет значение х в заданную позицию р в списке, где p=1, 2,…n, n+1. Если список содержит элементы a1, a2, ..., аn, то после выполнения этой функции список будет иметь вид а1, а2, ..., ар-1, х, ар, ..., a n.. Если р принимает значение n+1, то будем иметь a1 , a2, , ..., an ,, х. Если в списке нет позиции р, то оставить список без изменения. 3. Удаление элемента из заданной позиции списка. Эта функция удаляет элемент в позиции р списка, где p=1, 2,…n. Так, если список состоит из элементов a1, a2, ..., аn , то после выполнения этого оператора количество элементов уменьшится на единицу, а список будет иметь вид а1, а2, ...,, ap-1 ,ap+1, ..., аn. Оставить список без изменения, если в списке нет позиции р. 4. Удаление всех элементов из списка. 5. Проверка списка на упорядоченность его элементов. Функция должна возвращать одно из трех значений: 0 — если элементы не упорядочены, 1 — если элементы упорядочены по возрастанию, 2 — если элементы упорядочены по убыванию. 6. Объединение двух списков. В результате должен получиться третий список, в котором элементы списков чередуются до тех пор, пока один из списков не будет исчерпан. Оставшийся «хвост» более длинного списка помещается в конец нового списка. Первые 4 пункта я уже сделала,а вот 5 и 6 не могу ![]() вот начало моей программы:// последняя лаба.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> #include <stdlib.h> #include<clocale> using namespace std; struct item { int data; item *next; }; //функция добавления элемента x в заданную позицию pos односвязного списка void add(item *&top,int pos, int x) { int j=1; int i; item *pnew, *p=top; pnew=new item; pnew->data=x; if (pos<=1||top==NULL) { pnew->next=top; top=pnew; } else { for(i=1;i<pos-1;i++) if (p->next!=NULL) { p=p->next; j++; } if (pos<=j+1) { pnew->next=p->next; p->next=pnew; } } } // вспомогательная функция для вывода списка void print(item *top) { item *p=top; while (p!=NULL) { cout<<p->data<<' '; p=p->next; } cout<<endl; } //удалить все элементы void clrscr(item *&top) { while(top!=NULL) { if(top==NULL) { cout<<"спиок пуст!"<<endl; } else { item *p=top; top=top->next; delete p; } } } //удаление элемента с заданной позиции void delet(item *&top, int pos2) { item *a=top,*b; int i=0; while(a!=NULL) { a=a->next; i++; } if(pos2>i||pos2<1) { cout<<"такой позиции в списке нет!"<<endl; }//проверка на сущ-е позиции else { if(pos2==1) { a=top->next;//если эл-т первый top=a; } if (pos2>1) { i=1;//если эл-т не первый a=top; while (i!=pos2-1) { i++; a=a->next; } b=a->next; a->next=b->next;//сдвигаем delete b; } } } //............................порядок............ ![]() int poryadok(item *top) { item *q1,*q2; int l; q1=top->next;//указатель на вершину списка int i=0;int pos=0; int j=0; while (q2!=NULL){ q2=q1->next; l=q1-q2; q1=q1->next; pos++; if(l>0){i++;} else {j++;} }if(i==pos){cout<<"упорядочено по убыванию\n";} else {if(j==pos){cout<<"упорядочено по возрастанию\n";} else{cout<<"не упорядочено\n";}} return 0;} int main() { setlocale(LC_ALL,"Russian"); int pos, pos1, pos2, otv, da; item *first, *last; int x,r,k,m,y,j; item *top=NULL; cout<<"введите количество элементов в списке: "; cin>>k; if (k!=0) for (int i=1; i<=k; i++) // формирование списка { r=rand()%100; add(top,i,r); // вставка элемента } print(top); // вывод списка на экран cout<<"Введите номер позиции для вставки: "; cin>>pos; cout<<"Введиде значение элемента для вставки: "; cin>>x; add(top,pos,x); // добавление элементов в любую позицию списка print(top); cout<<"Введите номер позиции элемента для удаления: "; cin>>pos2; delet(top,pos2); print(top); poryadok(top); cout<<"Удалить все элементы? да-1, нет-2 : "; int l; cin>>l; if (l==1){ void clrscr(item *&top); cout<<"Элементы удалены."; } else {cout<<"элементы не удалены : "; print(top); } cin.get(); cin.get(); } |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 2 Всего: 183 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |