Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2021-03-17 | 74 |
5.00
из
|
Заказать работу |
|
|
|
struct List{
int data;
List *next;
};
q->next=p->next;
p->next=q;
q->next=p->next;
p->next=q;
q->data<->p->data
q=p->next;
p->next=q->next;
free(q);
A c b
0 | a | -1 |
1 | ||
2 |
0 | a | 1 |
1 | c | -1 |
2 |
0 | a | 2 |
1 | c | -1 |
2 | b | 1 |
Добавление с поиском
struct List{
int data;
List *next;
};
List* Add(List* p, int x)
{
List *q=p;
while (q!=NULL)
{
if (q->data==x)
break;
else
q=q->next;
}
if (q==NULL)
q=(List*)malloc(sizeof(List));
q->data=x;
q->next=p;
p=q;
}
return p;
}
Сортировка вставками
Самоорганизующийся список (программа с фиктивным элементом)
struct List{
int key;
List * next;
};
List* CreateList(void)
{
int i;
List *p=NULL, *q;
for (i=10; i>0; i--)
{
q=(List*)malloc(sizeof(List));
q->key=i;
q->next=p;
p=q;
}
q=(List*)malloc(sizeof(List));
q->next=p;
return q;
}
void PrintList(List *s)
{
s=s->next;
while (s!=NULL)
{
printf("%d ", s->key);
s=s->next;
}
printf("\n");
}
List* Search(List *s, int key)
{
List *p1, *p2;
p2=s;
p1=s->next;
while (p1!=NULL)
{
if (p1->key==key)
|
break;
p2=p1;
p1=p1->next;
}
if (p1!=NULL)
{
p2->next=p1->next;
p1->next=s->next;
s->next=p1;
}
return p1;
}
int main(void)
{
List *s=CreateList(), *q;
PrintList(s);
q=Search(s,5);
if (q==NULL)
printf("Element is absent\n");
else
printf("%d\n", q->key);
PrintList(s);
getch();
return 0;
}
Подсчет числа вхождений слов в файле (программа с барьером)
Поиск 5
5 | c | л | о | в | о |
с | л | о | в | о | 0 |
struct List{
char *word;
int count;
List *next;
};
static List* Last;
List* InitList(void)
{
List *s;
Last=s=(List*)malloc(sizeof(List));
s->next=NULL;
return s;
}
List* Add2List(List* s, char* word)
{
List *q=s;
Last->word=word;
while (strcmp(q->word,word))
q=q->next;
if (q!=Last)
q->count++;
else
{
q=(List*)malloc(sizeof(List));
q->word=word;
q->count=1;
q->next=s;
s=q;
}
return s;
}
void PrintList(List *s)
{
while (s!=Last)
{
printf("%s %d\n", s->word, s->count);
s=s->next;
}
}
int main(void)
{
List *s=NULL;
FILE *f;
char buf[80];
char *word;
if((f = fopen("wordlist.txt", "r")) == NULL)
printf("The file 'WordList' was not opened\n");
s=InitList();
fscanf(f, "%s", buf);
while (!feof(f))
{
word = (char *)malloc(strlen(buf)+1);
strcpy(word, buf);
s=Add2List(s, word);
fscanf(f, "%s", buf);
}
PrintList(s);
getch();
return 0;
}
Сложение двух полиномов
2x85 + 5x3 + 1
3x4 + x3
struct List{
int coef;
int pow;
List *next;
};
struct Queue{
List *first, *last;
};
void InitQueue(Queue *q)
{
q->first=q->last=(List*)malloc(sizeof(List));
|
}
void Add2Queue(Queue *q, int coef, int pow)
{
List *p;
p=(List*)malloc(sizeof(List));
p->coef=coef;
p->pow=pow;
p->next=NULL;
q->last->next=p;
q->last=p;
}
void ReadPol(FILE *f, Queue *q)
{
char buf[6];
int coef, pow;
do {
fscanf(f,"%s", buf);
coef=atoi(buf);
fscanf(f,"%s", buf);
pow=atoi(buf);
Add2Queue(q, coef, pow);
} while(!feof(f));
}
void PrintPol(Queue *q)
{
List *p=q->first;
while (p!=q->last)
{
p=p->next;
printf("%d %d ", p->coef, p->pow);
}
printf("\n");
}
void SupPol(Queue *q1, Queue *q2, Queue *q3)
{
List *p1=q1->first->next, *p2=q2->first->next;
int s;
while (p1!=NULL && p2!=NULL)
{
if (p1->pow > p2->pow)
{
Add2Queue(q3, p1->coef, p1->pow);
p1=p1->next;
}
else
{
if (p1->pow < p2->pow)
{
Add2Queue(q3, p2->coef, p2->pow);
p2=p2->next;
}
else
{
s=p1->coef+p2->coef;
if (s!=0)
{
Add2Queue(q3, s, p1->pow);
p1=p1->next;
p2=p2->next;
}
}
}
}
while (p1!=NULL)
{
Add2Queue(q3, p1->coef, p1->pow);
p1=p1->next;
}
while (p2!=NULL)
{
Add2Queue(q3, p2->coef, p2->pow);
p2=p2->next;
}
}
int main(void)
{
FILE *f;
Queue q1, q2, q3;
if((f = fopen("pol1.txt", "r")) == NULL)
printf("The file 'pol1' was not opened\n");
InitQueue(&q1);
ReadPol(f,&q1);
fclose(f);
PrintPol(&q1);
if((f = fopen("pol2.txt", "r")) == NULL)
printf("The file 'pol2' was not opened\n");
InitQueue(&q2);
ReadPol(f,&q2);
fclose(f);
PrintPol(&q2);
InitQueue(&q3);
SupPol(&q1, &q2, &q3);
PrintPol(&q3);
getch();
return 0;
}
|
|
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!