class linklist
{
private:
struct node
{
int data;
node *link;
}*p;
public:
linklist();
void append( int num );
void add_as_first( int num );
void addafter( int c, int num );
void del( int num );
void display();
int count();
~linklist();
};
linklist::linklist()
{
p=NULL;
}
void linklist::append(int num)
{
node *q,*t;
if( p == NULL )
{
p = new node;
p->data = num;
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node;
t->data = num;
t->link = NULL;
q->link = t;
}
}
void linklist::add_as_first(int num)
{
node *q;
q = new node;
q->data = num;
q->link = p;
p = q;
}
void linklist::addafter( int c, int num)
{
node *q,*t;
int i;
for(i=0,q=p;i<c;i++)
{
q = q->link;
if( q == NULL )
{
cout<<"\nThere are less than "<<c<<" elements.";
return;
}
}
t = new node;
t->data = num;
t->link = q->link;
q->link = t;
}
void linklist::del( int num )
{
node *q,*r;
q = p;
if( q->data == num )
{
p = q->link;
delete q;
return;
}
r = q;
while( q!=NULL )
{
if( q->data == num )
{
r->link = q->link;
delete q;
return;
}
r = q;
q = q->link;
}
cout<<"\nElement "<<num<<" not Found.";
}
void linklist::display()
{
node *q;
cout<<endl;
for( q = p ; q != NULL ; q = q->link )
cout<<endl<<q->data;
}
int linklist::count()
{
node *q;
int c=0;
for( q=p ; q != NULL ; q = q->link )
c++;
return c;
}
linklist::~linklist()
{
node *q;
if( p == NULL )
return;
while( p != NULL )
{
q = p->link;
delete p;
p = q;
}
}
Что сложного? Создаёшь еще один список и добавляешь в него элементы из всех переданных списков. Для передачи разного числа аргументов читай va_list.Язык c++
Есть класс для динамических списков, нужно написать процедуру или как-то реализовать объединение двух (или более, возможно восьми) списков в один
алгоритм понятен, конечно (хотя мне кажется указатель последнего элемента одного списка направить на начальный второго более ресурсноэкономно). проблема именно в реализации для классов, ведь linklist l1,l2, например, это не списки. возможно, я не так формулирую, но понять как реализовать объединение для конкретного случая без понятияЧто сложного? Создаёшь еще один список и добавляешь в него элементы из всех переданных списков. Для передачи разного числа аргументов читай va_list.
var x=array[1..100] of integer;
i,min,k,n:integer;
begin
min=32000;
k=1;
n=10;
for i:=1 to n do
begin
readln(x[i]);
if x[i]<min
begin
min=x[i];
k=i;
end;
end;
writeln('min=',min,',ind=',k);
end.
uses crt;
type arr=array[1..100] of integer;
Function min(x:arr;var j:integer;n:integer):integer;
begin
var i,t:integer;
j:=1;t:=32000;
for i:=1 to n do
begin
writeln('Enter ',i,' element');
readln(x[i]);
if x[i]<t then
begin
t:=x[i];
j:=i;
end;
end;
min:=t;
end;
begin
var n,j:integer;
var a,b,c:arr;
n:=5;
writeln('min from array A=',min(a,j,n));
writeln('index min from array A=',j);
n:=6;
writeln('min from array B=',min(b,j,n));
writeln('index min from array B=',j);
n:=5;
writeln('min from array C=',min(c,j,n));
writeln('index min from array C=',j);
readln;
end.
спс Пух
очень нужна помощь по Паскалю...
задача: найти произведение "Л" последних отрицательных элементов массива ...
пожалуйста кто может напишите программу, а то как не делал не решает правильно, так что смысла вставлять текст своей программы нет...
pr:=1; count=0;
for i:=1 to n do
readln(a[i]);
if (n<L)
write('Error');
for i:=n downto 1 do
begin
if a[i]<0 then
begin
inc(count);
pr:=pr*a[i];
end;
if count=L then
break;
end;
if (count<>L) then
write('Error');
else
write('pr=',pr);
end.