здравствуйте,помогите исправить логическую ошибку в функции SimList (дан список из целых чисел,нужно проверить является ли он симметричным)
| Код | #include <iostream> #include <conio.h> #include <math.h> #include <stdlib.h> #include <time.h> #include <stdio.h> #include <locale.h> #include <iomanip>
using namespace std;
struct TList { int Info; TList *Next,*Pred; };
//вывод списка на экран void PrintList(TList *Head,TList *Tail){ cout << "список: "; TList *p=Head->Next; while(p != Tail){ cout <<setw(4)<< p->Info; p = p->Next; } cout << "\n"; } void MakeList(TList *&Head,TList *&Tail) { Head = new TList; Tail=new TList; Head->Next=Tail; Tail->Pred=Head; cout<<"введите элементы списка до 0"<<endl; int k; cin>>k; while (k!=0) { TList *p; p=new TList; p->Info=k; p->Next=Tail; p->Pred=Tail->Pred; Tail->Pred=p; p->Pred->Next=p; cin>>k; } return; }
void SimList(TList *Head,TList *Tail, int n) { TList *p,*q; cout<<"проверяем симметрию:"<<endl; p=Head->Next; q=Tail->Pred; int c=0; while((p!=q)&(p->Next!=q)) { cout<<setw(4)<<p->Info; cout<<setw(4)<<q->Info; cout<<endl; p=p->Next; q=q->Pred; if (p->Info==q->Info) c++; } if (c==(n/2)){ cout<<"список симметричен"<<endl; }else {cout<<"список не симметричен"<<endl; } }
void main () { setlocale(LC_ALL,"RUS"); TList *Head;TList *Tail; cout<<"введите количество элементов"<<endl; int n; cin>>n; MakeList(Head,Tail); PrintList(Head,Tail); SimList(Head,Tail, n); getch(); return ;
}
|
|