Автор работы: Пользователь скрыл имя, 22 Октября 2010 в 13:05, Не определен
Лабораторная работа
};
struct cell* input(void)
{
struct cell *p;
p=(struct cell *)malloc(sizeof(struct cell));
printf("Sign=");
scanf("%s",& p->sign);
printf("Weight=");
scanf("%d",& p->weight);
if(p->weight==0)
{
free(p);
return NULL;
}
p->pc=input();
return p;
}
void output(struct cell *p)
{
if (p==NULL)
{
printf("\nEND");
return;
}
printf("\nsign=%s\
output(p->pc);
}
void main(void)
{
struct cell *beg=NULL;
beg=input();
printf("\nBegin");
output(beg);
}
12
Задача 1
Создать несвязанный числовой список в виде массива. Распечатать его.
Выполнить следующие операции с несвязанным списком:
а) найти максимальный по модулю элемент;
б) вставить за ним новый элемент, равный по величине, но противоположный по знаку;
в) Новый список распечатать.
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int abc (int x) {return x>0?x:-x;}
void main(void)
{
int
d[100]={1,2,300,-4,-50,6,7},L=
int
max = 0;
//максимальный по модулю элемент
for (int i=0;i<L;i++)
if(abc(d[i])>abc(
printf("MAX
element= |%d|",d[max]);
//добавление нового элемента за МАХ элеме
for (int j=L-1; j>max; j--)
d[j+1]=d[j];
d[max+1]=-d[max];
L++;
//исключить первый элемент списка
for (j=0; j<L; j++)
d[j]=d[j+1];
L--;
//новый список
cout<<"\n";
for
(i=0;i<L;i++) cout<<d[i]<<"\t";
cerr<<" ";
}
Задача 2
Создать связанный числовой список. Распечатать его. Выполнить следующие операции со связанным списком:
а) найти максимальный по модулю элемент;
б) вставить за ним новый элемент, равный по величине, но противоположный по знаку;
в) исключить первый элемент списка. Новый список распечатать.
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int abc (int x) {return x>0?x:-x;}
struct ND
{
int val;
struct ND * n;
} *dl=NULL, *r, *p=NULL;
void main(void)
{
int mas[]={1,2,3,-50,6,30,1,2,3};
for(int i=0;i<sizeof(mas)/sizeof(mas[
{
r=new ND;
r->val=mas[i];
r->n=NULL;
if(dl==NULL)
{
dl=r;
p=r;
}
else
{
p->n=r;
p=r;
}
}
//максимальный по модулю элемент
p=dl;
int MAX=dl->val;
while((p->n)!=NULL)
{
p=p->n;
if(abc(p->val)>abc(MAX)) MAX=p->val;
}
cout<<"\n";
printf("MAX element= |%d|",MAX);
//добавление нового элемента за МАХ
p=dl;
while((p->n)!=NULL)
{
p=p->n;
if(p->val==MAX)
{
r=new ND;
r->n=p->n;
r->val=-MAX;
p->n=r;
}
}
//исключить первый элемент списка
p=dl;
dl=dl->n;
delete
(p);
//новый список
p=dl;
cout<<"\nspisok\n"
while(p!=NULL)
{
cout<<p->
p=p->n;
}
cerr<<" ";
}
Задача 3
Создать связанный числовой список типа очередь из 5 объектов. Распечатать его. Выполнить следующие операции со связанным списком:
а) добавить два новых объекта в очередь. Распечатать очередь;
б) поменять местами первый и последний объект в очереди. Распечатать очередь;
в) удалить из очереди первых три объекта. Распечатать очередь.
*/
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
struct elem {
int inf;
struct elem *link;
} *begq=NULL, *endq=NULL;
void addel(int val)
{
struct elem *p= new struct elem;
p->inf=val;
p->link=NULL;
if(endq==NULL) begq=p;
else endq->link=p;
endq=p;
}
int getdelel(void)
{
struct elem *p;
int temp;
temp=begq->inf;
p=begq;
begq=p->link;
if(begq==NULL) endq=NULL;
delete p;
return temp;
}
void output(struct elem *p)
{
if (p==NULL)
{
printf("\nEND");
return;
}
printf("\tinf=%i",p->
output(p->link);
}
void main(void)
{
int mas[]={10,20,30,1,2,3};
for (int i=0;i<sizeof(mas)/sizeof(mas[
output(begq);
int number;
while (1)
{
printf("\n 1 - добавить два новых объекта в очередь");
printf("\n 2 - поменять местами первый и последний объект в очереди");
printf("\n 3 - удалить из очереди первых три объекта");
printf("\n 4 - Exit");
while (1)
{
printf("\n Menu:");
scanf("%d",&number);
if(number>0&&number<5) break;
printf("\n Error menu");
while (getchar()!='\n');
}
switch (number)
{
case 1:
{
//а)
scanf(
addel(
scanf(
addel(
break;
}
case 2:
{
//б)
int temp = getdelel();
int endelement= endq->inf;
while (begq->inf != endelement) addel(getdelel());
addel(
break;
}
case 3:
{
//в)
for (i=0;i<2;i++) getdelel();
break;
}
case 4: exit(0); break;
default: exit(0);
}
printf("\nnew spisok\n");
output(begq);
cerr<<" ";
getch();
}
}
/*
struct cell* input(void)
{
struct cell *p;
p=(struct cell *)malloc(sizeof(struct cell));
printf("Sign=");
scanf("%s",& p->sign);
printf("Weight=");
scanf("%d",& p->weight);
if(p->weight==0)
{
free(p);
return NULL;
}
p->pc=input();
return p;
}
Задача 4
Создать связанный числовой список типа стек из 5 объектов. Распечатать его. Выполнить следующие операции со связанным списком:
а) добавить два новых объекта в стек. Распечатать стек;
б) поменять местами первый и последний объект в стека. Распечатать стек;
в) удалить из
стека первых три объекта. Распечатать
стек.
Информация о работе Программирование на языках высокого уровня