close

Вход

Забыли?

вход по аккаунту

?

3

код для вставкиСкачать
Федеральное агентство по образованию Российской Федерации
Государственное образовательное учреждение профессионального образования
Нижневаротвский Государственный Гуманитарный Университет
(НГГУ)
Факультет Информационных Технологий и Математики
Кафедра информатики и методики преподавания информации.
Лабораторная работа №3.
Выполнил: Космынин Владимир Викторович
Проверил: Казиахметов Тофик Багаутдинович
Вариант 6
г. Нижневартовск - 2010 год
1. Создать односвязный список для хранения записи Фамилия, факультет, курс, группа. Реализовать методы: Добавить узел, удалить узел, просмотр списка, определение принадлежности элемента списку.
Код программы:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <malloc.h>
typedef struct s{ char fam[100]; //создаю
char fac[100]; //список
char kur[100]; char gru[100]; struct s * next;
} S;
S *beg=NULL, *end=NULL, *p; S *l1(S *p, S *end){
char c[100]; p->next = (S *) malloc(sizeof(S)); //занашу
p = p->next; //информ.
printf("\n Введите фамилию : "); //в данной
scanf("%s", &c); //связке
strcpy(p->fam, c);
printf(" Введите факультет : ");
scanf("%s", &c); strcpy(p->fac, c);
printf(" Введите курс : ");
scanf("%s", &c); strcpy(p->kur, c);
printf(" Введите группу : ");
scanf("%s", &c); strcpy(p->gru, c);
p->next = end; return p; }
S * l2(S *p, S *beg, S *end){ printf("\nУдаление с начала списка :"); //удаляю
p=beg; //первую
beg=beg->next; //связку
free(p); //списка
return beg;
}
void l3(S *p, S *beg, S *end){
p=beg;
do{ //вывожу
printf("\nФамилия : %s", p->fam); //каждую printf("\nфакультет : %s", p->fac); //связку из
printf("\nкурс : %s", p->kur); //списка
printf("\nгруппа : %s", p->gru); //начиная
beg=p->next; //с первого
p=beg;
}
while (beg!=NULL); //пока начало не равно канцом списка
} void l4(S *p, S *beg, S *end){
char c[100];
int y;
printf("\nВведите фамилию : ");
scanf("%s", &c);
p=beg;
while (p != NULL){
y=stricmp(p->fam, c); //сравнение связки с веденным словом
if (y == 0){
printf("\nнайдено\n");
break;
}
else p = p->next; //переход к следующей связке
} }
int main(){
int n,x;
printf("\nВведите размерность : ");
scanf("%d", &n);
int i;
char c[100];
printf("\nВведите: фамилия, факультет, курс, группа\n");
p=(S *)malloc(sizeof(S));
scanf("%s", &c); //заполняю
strcpy(p->fam, c); //первою
scanf("%s", &c); //связку
strcpy(p->fac, c); //списка
scanf("%s", &c); strcpy(p->kur, c);
scanf("%s", &c);
strcpy(p->gru, c);
beg=p;
p->next=end; for(i=1; i<n; i++) p=l1(p,end);
do { puts("\nВведите:");
puts("1 и Enter - добавить узел");
puts("2 и Enter - удалить узел");
puts("3 и Enter - вывести список");
puts("4 и Enter - принадлежность");
puts("0 и Enter - для выхода из программы");
scanf("%d", &x);
switch (x) { case 1: p= l1(p,end); break; case 2: beg= l2(p,beg,end); break;
case 3: l3(p,beg,end); break;
case 4: l4(p,beg,end); break; } } while (x!=0); getch();
return 0; }
2, Создать двусвязный список для хранения городов и количества населения в них. Реализовать методы: Добавить узел, удалить узел, просмотр списка слева направо и справа налево, определение принадлежности элемента списку.
Код программы:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <malloc.h>
typedef struct s{
char gor[100]; //создаю
char nas[100]; //двухсвязный
struct s * next; //список
struct s * go; } S;
S *beg=NULL, *end=NULL, *p;
S *l1(S *p, S *end){
char c[100]; p->next = (S *) malloc(sizeof(S));
p = p->next; //заполняю
printf("\n Введите город : "); //эменты
scanf("%s", &c); //в связку
strcpy(p->gor, c);
printf(" Введите население : ");
scanf("%s", &c);
strcpy(p->nas, c);
p->next = end; return p; }
S *l2(S *p, S *beg, S *end){ printf("\nУдаление с начала списка :"); //удоляю
p=beg; //головную
beg=beg->next; //часть
free(p); //списка
return beg;
}
void l3(S *p, S *beg, S *end){
printf("\nПроход слева ");
p = beg;
while (p != NULL){
printf("\nгород : %s", p->gor);
printf("\nнаселение : %s", p->nas);
p = p->next;
};
p = end; printf("\nПроход справо");
while (p != NULL){
printf("\nгород : %s", p->gor);
printf("\nнаселение : %s", p->nas);
p = p->go;
}; } void l4(S *p, S *beg, S *end){
char c[100];
int y;
printf("\nВведите город : ");
scanf("%s", &c);
p=beg;
while (p != NULL){
y=stricmp(p->gor, c);//сравнение связки с веденным словом
if (y == 0){
printf("\nнайдено\n");
break;
}
else p = p->next;//переход к следующей связке
} }
int main(){
int n,x;
printf("\nВведите размерность : ");
scanf("%d", &n);
int i;
char c[100];
printf("\nВведите: город, население");
p=(S *)malloc(sizeof(S)); //заполняю
scanf("%s", &c); //первую
strcpy(p->gor, c); //связку
scanf("%s", &c); //списка
strcpy(p->nas, c);
beg=p;
p->next=end; for(i=1; i<n; i++) p=l1(p,end);
do { puts("\nВведите:");
puts("1 и Enter - добавить узел");
puts("2 и Enter - удалить узел");
puts("3 и Enter - вывести список");
puts("4 и Enter - принадлежность");
puts("0 и Enter - для выхода из программы");
scanf("%d", &x);
switch (x) { case 1: p= l1(p,end); break; case 2: beg= l2(p,beg,end); break;
case 3: l3(p,beg,end); break;
case 4: l4(p,beg,end); break; } } while (x!=0); getch();
return 0; }return 0;
}
3, Реализовать стек строк на основе односвязного линейного списка
Код программы:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <malloc.h>
typedef struct s{ //создаю
char gor[100]; //спиок
struct s * next; //в виде
} S; //стека
S *beg=NULL, *end=NULL, *p;
S *l1(S *p, S *end){ char c[100]; p->next = (S *) malloc(sizeof(S)); //заполнение
printf("\nВведите город : "); //с головной
scanf("%s", &c); //части
strcpy(p->gor, c); //списка
p->next; //(стэка)
beg=p; return p; }
S *l2(S *p, S *beg, S *end){ printf("\nУдаление с начала cтэка :"); //удаление
p=beg; //с вершины
beg=beg->next; //стэка
free(p);
return beg;
}
void l3(S *p, S *beg, S *end){
p=beg;
do{ //вывод
printf("\nгород : %s", p->gor); //на
beg=p->next; //экран
p=beg;
}
while (beg!=NULL); } void l4(S *p, S *beg, S *end){
char c[100];
int y; printf("\nВведите город : ");
scanf("%s", &c);
p=beg;
while (p != NULL){
y=stricmp(p->gor, c);//сравнение связки с веденным словом
if (y == 0){
printf("\nнайдено\n");
break;
}
else p = p->next;//переход к следующей связке
} }
int main(){
int n,x;
printf("\nВведите размерность : ");
scanf("%d", &n);
int i;
char c[100];
printf("/nВведите: город");
p=(S *)malloc(sizeof(S)); //заполняю
scanf("%s", &c); //первую
strcpy(p->gor, c); //связку
//списка
//(стэка)
beg=p;
p->next=end; for(i=1; i<n; i++) p=l1(p,end);
do { puts("\nВведите:");
puts("1 и Enter - добавить узел");
puts("2 и Enter - удалить узел");
puts("3 и Enter - вывести список");
puts("4 и Enter - принадлежность");
puts("0 и Enter - для выхода из программы");
scanf("%d", &x);
switch (x) { case 1: p= l1(p,end); break; case 2: beg= l2(p,beg,end); break;
case 3: l3(p,beg,end); break;
case 4: l4(p,beg,end); break; } } while (x!=0); getch();
return 0; }
Документ
Категория
Рефераты
Просмотров
60
Размер файла
27 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа