Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 19
1

Переделать двусвязный список в односвязный список

09.11.2014, 17:20. Показов 1235. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
//---------------------------------------------------------------------------
 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
//---------------------------------------------------------------------------
void main(void)
{char c;
int key=0;
struct symbol{
char symb;          
struct symbol *next;  
struct symbol *prev;       
}*Start,*Temp;
printf ("Для завершения ввода строки нажмите Enter\n");
Start=(struct symbol *)malloc(sizeof(struct symbol));      
Start->symb=getchar();                                     
Start->prev=NULL;                                          
if(!Start) {
    printf("Oshibka raspredelenia pamyati\n");
    exit(1);
}
for (Temp=Start; (c=getchar())!='\n'; ) {
    Temp->next=(struct symbol *)malloc(sizeof(struct symbol));
    if(!(Temp->next)) {
    printf("Oshibka raspredelenia pamyati\n");
    exit(1);
    }
    Temp->next->prev=Temp;
    Temp=Temp->next;  
    Temp->symb=c;     
    Temp->next=NULL;  
}
printf ("\nNaydennie slova c 2 (kak minimum) povtor sosed bukvi:");
for (Temp=Start; (Temp->next)!=NULL; Temp=Temp->next) {
   if (((Temp->symb)!=' ') && ((Temp->symb)==(Temp->next->symb))) {
      putchar('\n');
      key++;
      for (; ((Temp!=Start) && ((Temp->symb)!=' ')); Temp=Temp->prev) {}       
      for (Temp=Temp->next; (((Temp->symb)!=' ') && (Temp!=NULL)); Temp=Temp->next) {putchar(Temp->symb);} 
      Temp=Temp->prev;
   }
}
if (!key) {printf("\nTrebuemih slov not!!!");}
else printf("\nНапечатано %d слов", key);
while (Start!=NULL)  {      
        Temp=Start;
        Start=Start->next;
        free(Start);
}
getch();
}
Добавлено через 29 минут
Прошу вас очень нужно!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 17:20
Ответы с готовыми решениями:

Двусвязный список
Добрый день! Не могли бы вы внятно объяснить, что такое структура данных, что такое двусвязный...

Двусвязный список
Как связана динамическая структура данных и двусвязный список? И связаны ли они вообще?

Двусвязный список
Нужно &quot;склеить&quot; 2 списка в третий список по следующему правилу: сначала идет первый элемент...

Двусвязный список Си
Здравствуйте. Имеется код, в котором пытаюсь сделать двусвязный список, содержащий структуры,...

2
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
11.11.2014, 03:42 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
//---------------------------------------------------------------------------
 
#include <stdio.h>
#include <stdlib.h>
 
//---------------------------------------------------------------------------
int main() {
    char c;
    int key = 0, space;
    struct symbol {
        char symb;
        struct symbol* next;
    }   * start, * temp, *p;
 
    printf("Для завершения ввода строки нажмите Enter\n");
    start = (struct symbol*) malloc(sizeof(struct symbol));
    if (!start) {
        printf("Oshibka raspredelenia pamyati\n");
        return 1;
    }
    start->symb = getchar();
    start->next = NULL;
 
    for (temp = start; (c = getchar()) != '\n';) {
        temp->next = (struct symbol*)malloc(sizeof(struct symbol));
        if (!(temp->next)) {
            printf("Oshibka raspredelenia pamyati\n");
            return 1;
        }
        temp = temp->next;
        temp->symb = c;
        temp->next = NULL;
    }
 
    space = (start->symb == ' ');
    for (p = temp = start; temp; temp = temp->next) {
        if (temp->symb == ' ') {
            space = 1;
        }
        else {
            if (space) {
                space = 0;
                p = temp;
            }
            if (temp->next && (temp->symb == temp->next->symb)) {
                key++;
 
                for (; p && (p->symb != ' '); p = p->next) {
                    putchar(p->symb);
                }
                putchar('\n');
                if (p == NULL) {
                    break;
                }
                temp = p;
            }
        }
    }
 
    if (!key) {
        printf("Trebuemih slov not!!!\n");
    }
    else {
        printf("Напечатано %d слов\n", key);
    }
 
    while (start != NULL) {
        temp = start;
        start = start->next;
        free(temp);
    }
 
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 19
28.11.2014, 17:00  [ТС] 3
спасибо огрмное
0
28.11.2014, 17:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2014, 17:00
Помогаю со студенческими работами здесь

Двусвязный список в языке Си
Здравствуйте,помогите пожалуйста в тете &quot;Двусвязный список&quot; Создать двусвязный список с ...

Односвязный список
Вопрос может не по теме и не для форума, но я задам. Решил написать на СИ библиотеку для связного...

Правильно ли реализован двусвязный список
Здравствуйте! Пытаюсь на С двусвязный список сделать, вот код: struct Node { int count; ...

Создать двусвязный список из файла
Здравствуйте! Мне нужно создать двусвязный список из файла на Си(не C++). В файле содержатся 2...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru