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

Очередь в линейном списке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Текст из 20 строк хранится в файле, группа символов в строке называется словом, знаки препинания от слова пробелом не отделяются http://www.cyberforum.ru/cpp-beginners/thread581949.html
Помогите пожалуйста. Текст из 20 строк хранится в файле, группа символов в строке называется словом, знаки препинания от слова пробелом не отделяются. Выполнить следующие операции:Определить количество предложений, учитывая, что предложение заканчивается точкой, вопросительным или восклицательным знаками
C++ Что делает функция rename_unlink Имеется следующая программа,надо откоментировать и собственно понять,что делает каждая из функций? #if defined(__unix__) #include <dirent.h> /* ripped from http://www.opensource.apple.com/darwinsource/Current/srm-6/srm/src/rename_unlink.c */ static int empty_directory(const char *path) { DIR *dp; struct dirent *de; http://www.cyberforum.ru/cpp-beginners/thread581948.html
C++ Что делает функция tree_walker
Имеется следующая программа,надо откоментировать и собственно понять,что делает каждая из функций? #undef HAVE_FTS_OPEN /* *??? */ #define _GNU_SOURCE #endif #if defined(__linux__) && defined(HAVE_FTS_OPEN)
Что делает программа C++
Имеется следующая программа,надо откоментировать и собственно понять,что делает каждая из функций? void error(char *msg, ...) { va_list ap; char buff; va_start(ap, msg); vsnprintf(buff, 100, msg, ap); fprintf(stderr, "%s: %s\n", program_name, buff); va_end(ap);
C++ Метод кубической интерполяции http://www.cyberforum.ru/cpp-beginners/thread581942.html
Доброго времени суток! Метод описан во вложении. Написал программу, но она зацикливается. Не могу понять в чём дело. Помогите пожалуйста разобраться. #include <iostream> #include <cmath> using namespace std; void Coeff_11(double a, double b, double *f_x, double *c, double *d); void kub (double a, double b, double *f_x, double *c, double *d, double *z); double F(double x); double F_D(double...
C++ Эцп Эль-Гамаля.Генерация параметров Даже не знаю в какой раздел писать. По описанию метода параметрами являются простое число p и порождающий элемент мультипликативной группы Zp* -- g. Простое число p можно получить например генерируя случайное и проверяя тестом Миллера-Рабина. Но как получить число g. В книге Рябко ФИонова видел что если получить просты числа p и q такие, что p=2q+1 Тогда в качестве g можно взять любое... подробнее

Показать сообщение отдельно
Ilyaa
20 / 20 / 3
Регистрация: 29.04.2012
Сообщений: 214

Очередь в линейном списке - C++

21.05.2012, 22:43. Просмотров 272. Ответов 0
Метки (Все метки)

Добрый вечер, форумчане.
Моя цель - реализовать очередь в виде линейного списка.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
 
struct data
{
    char *mas;
    struct data *next;
    struct data *next1;
} *first;
int i=1, j=0;
 
 
void qstore(char *buf)
{
    struct data *temp;
    if((temp=(data*)malloc(sizeof(data))) == NULL)
    {
        printf("Memory allocation error!\n");
        exit(0);
    }
    else
    {
        temp->mas=buf;
        temp->next=first;
        //if (i==1) temp->next1=first;
        first=temp;
    }
}
 
void enter()
{
  char s[256],*p;
  p=(char*)malloc(sizeof(char));
  do {
    printf("Enter element %d: ", i++);
    gets(s);
    if(*s==0) {i--; break;}
    p=(char*)malloc(strlen(s)+1);
    if(!p)
    {
      printf("\nMemory allocation error!\n");
      return;
    }
    strcpy(p,s);
    if(*s) qstore(p);
  } while(*s);
}
 
char* qretrieve()
{
    char *temp;
    struct data *del;
 
    if(first==NULL)
    {
        printf("Empty!\n");
        return(0);
    }
    else
    {
        temp=first->mas;
        del=first;
        first=first->next;
        free(del);
        //j++;
        i--;
        return(temp);
    }
}
 
void review()
{
    struct data *curr;
    int i1=i-1;
    curr=first;
    while(i1--)
    {
        printf("%d %s\n", i1+1,curr->mas);
        curr=curr->next;
    }
}
 
int main()
{
    char s[80];
    if((first=(data*)malloc(sizeof(data))) == NULL)
    {
        printf("Memory allocation error!\n");
        exit(1);
    }
 
     while(1)
  {
    printf("Enter (E), List (L), Delete (R), Quit (Q): ");
    gets(s);
    *s=toupper(*s);
 
    switch(*s) {
      case 'E':
        enter();
        break;
      case 'L':
        review();
        break;
      case 'R':
        qretrieve();
        break;
      case 'Q':
        exit(1);
    }
  }
 
    return 0;
}
В принципе все работает, кроме удаление элементов. Они должны удалятся по принципу FIFO, а получается FILO. Как перенаправить указатель, чтобы удаление происходило с конца, а не с начала?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru