Форум программистов, компьютерный форум CyberForum.ru

Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения - C++

Восстановить пароль Регистрация
 
denya_pervov
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 6
24.04.2014, 14:58     Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения #1
Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения. Предусмотреть добавление элементов в конец списка, поиск по дате рождения, удаление по фамилии. Предусмотреть удаление списка перед выходом из программы.

Вот все что смог сделать. Надеюсь на вашу помощь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <conio.h> 
#include <stdio.h>
#include <string.h>
#include <windows.h>
struct node {
char data[40];
node *next, *prev;
};
node* first=NULL;
node* tail=NULL;
void add(char s[40]){
    node* newnode=new node;
    strcpy(newnode->data,s);
    newnode->prev=tail;
    newnode->next=NULL;
    if (tail) tail->next=newnode;
    tail=newnode;
    if (! first) first =tail;
}
void find(char w[20]){
    
    node* cur=first;
    while (cur && strstr(cur->data,w))
cur = cur->next;
     puts(cur->data);       
}
 
void main()
{   
    setlocale(0,"");
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
    int a=0;
    char s[40];
    char w[20];
while (a!=4){
printf("\nВыбирите действие: \n 1-добавить один элемент  \n 2-выполнить поиск по дате \n 3-вывести \n 4-завершить работу \n ");
scanf("%i",&a);
switch (a){
case 1: printf("\nвведите фамилию и дату"); gets(s); add(s);break;
case 2: printf("\nвведите дату рождения");gets(w);find(w);break;
case 3: break;
case 4:  break;
default: break;
}
}
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 14:58     Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения
Посмотрите здесь:

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад C++
C++ Структуры: Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра
C++ Распечатать список учеников , фамилии которых начинаются на букву В, с указанием даты их рождения
Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением) C++
Динамические структуры данных: двунаправленный список строк C++
Создать связный динамический список двунаправленный и в нем обеспечить подсчет элементов C++
C++ Как организовать массив для хранения данных?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denya_pervov
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 6
28.04.2014, 10:52  [ТС]     Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения #2
если кому нужно будет вот решение:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <conio.h> 
#include <stdio.h>
#include <string.h>
#include <windows.h>
struct node {
char data[12];
char fam[20];
node *next, *prev;
};
node* first=NULL;
node* tail=NULL;
void add(char s[20],char s1[12]){
    node* newnode=new node;
    strcpy(newnode->fam,s);
    strcpy(newnode->data,s1);
    newnode->prev=tail;
    newnode->next=NULL;
    if (tail) tail->next=newnode;
    tail=newnode;
    if (! first) first =tail;
}
void find(char w[12]){
    node* cur=first;
    while (cur && strcmp(cur->data,w))
    cur = cur->next;
    puts(cur->fam);     
}
void del(char s[20]){
    node* q;
    node* cur=first;
    while (cur && strcmp(cur->fam,s))
    cur = cur->next;
    q=cur;
    if (first==q){
        first=q->next; //удаляем первый элемент
        if (first) first->prev=NULL;
        else tail=NULL; //удалили единственный элемент
    }
    else {
        node* q1=q->prev;
        node* q2=q->next;
        q1->next=q->next;
        if (q->next) q2->prev=q->prev;
        else tail=NULL; //удалили последний элемент
    }
    delete q;
}
void show()  
{ 
    node* cur = first; 
    while(cur) 
    { 
        puts(cur->fam);
        puts(cur->data);
        cur = cur->next; 
    }
}
 
void main()
{   
    setlocale(0,"");
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
    int a=0;
    char s[20];
    char w[20];
    char s1[12];
 
while (a!=5){
printf("\nВыбирите действие: \n 1-добавить один элемент  \n 2-выполнить поиск по дате \n 3-вывести \n 4-удалить по фамилии \n5-завершить работу \n ");
scanf("%i",&a);
fflush(stdin);
switch (a){
case 1: printf("\nвведите фамилию  "); gets(s);printf("\nвведите дату ");gets(s1);add(s,s1);break;
case 2: printf("\nвведите дату рождения ");gets(s1);find(s1);break;
case 3: show(); break;
case 4: printf("\nвведите фамилию  "); gets(s); del(s); break;
default: break;
}
}
    getch();
}
Yandex
Объявления
28.04.2014, 10:52     Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения
Ответ Создать тему
Опции темы

Текущее время: 03:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru