| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Линейные списки |
| Автор: КэтринМ 25.1.2013, 00:08 |
| помогите,пожалуйста)) задача: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 26.1.2013, 08:20 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |