Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
1

Очередь на базе списка: добавление элемента, удаление, поиск в очереди, вывод на экран

05.05.2013, 19:39. Показов 3070. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может у кого есть готовое решение этого задания, буду Вам очень признателен. Желательно что бы пользователь сам вводил значения с клавиатуры.
ЗЫ: с Праздником всех)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 19:39
Ответы с готовыми решениями:

Создать очередь из файла, совершение операций надо очередью(удаление элемента, добавление, запись в файл, вывод)
Друзья, завтра сдать курсач, неделю парился с кодом. В итоге ничего дельного не вышло. Обращаюсь к...

Создание однонаправленного списка, вывод на экран, добавление и удаление элементов
Write a program that creates a singly linked list consisting of positive and negative integers,...

Добавление и удаление элемента из очереди
Есть три очереди, с размерностями 13, 19, 19 Когда добавляю элементы в очереди (в конец), я...

Добавление элементов в очередь и вывод на экран
Помогите реализовать простенькую программку из паскаля в delphi. А то я слаб в нём... Мне самое...

3
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
06.05.2013, 09:02 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <stdio.h>
#include <stdlib.h>
 
typedef struct node_t
{
   int value;
   struct node_t* next;
}  TNode;
 
typedef struct queue_t
{
   TNode* head;
   TNode* tail;
}  TQueue;
 
//-----------------------------------------------------------------------------
TQueue* Push(TQueue* queue, int value)
{
   TNode* node = (TNode*) malloc(sizeof(TNode));
   node->value = value;
   node->next = NULL;
 
   if (queue->head && queue->tail)
   {
      queue->tail->next = node;
      queue->tail = node;
   }
   else
   {
      queue->head = queue->tail = node;
   }
 
   return queue;
}
//-----------------------------------------------------------------------------
int Pop(TQueue* queue)
{
   int value = 0;
 
   if (queue->head)
   {
      value = queue->head->value;
      queue->head = queue->head->next;
   }
 
   return value;
}
//-----------------------------------------------------------------------------
TNode* Find(TQueue* queue, int value)
{
   TNode* node = queue->head;
 
   for (; node && (node->value != value); node = node->next) { ; }
 
   return node;
}
//-----------------------------------------------------------------------------
void Print(const TQueue* queue)
{
   const TNode* node = queue->head;
 
   for (; node; node = node->next)
   {
      printf("%d ", node->value);
   }
   printf("\n");
}
//-----------------------------------------------------------------------------
 
int main()
{
   TQueue queue = {NULL, NULL};
   int value = 0;
 
   printf("elements: ");
   while (scanf("%d", &value))
   {
      Push(&queue, value);
   }
 
   printf("result: "); Print(&queue);
 
   printf("popped: %d\n", Pop(&queue));
   printf("popped: %d\n", Pop(&queue));
   printf("popped: %d\n", Pop(&queue));
 
   printf("result: "); Print(&queue);
 
   printf("find: ");
   fflush(stdin);
   scanf("%d", &value);
 
   TNode* find = Find(&queue, value);
 
   if (find)
   {
      printf("found: %d\n", find->value);
   }
   else
   {
      printf("%d not found\n", value);
   }
 
   system("pause");
 
   return 0;
}
Очередь на базе списка: добавление элемента, удаление, поиск в очереди, вывод на экран


Бинарник + исходник: program.7z
2
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
06.05.2013, 11:44  [ТС] 3
Большое Вам спасибо!!!

Добавлено через 55 минут
я конечно обнаглел, но если это не отнимет у Вас много времени, можете,пожалуйста, немного переделать код, что бы он работал по принципу этого ? (т.е самая элементарная менюшка (циклом) + печать позиции найденого элемента)
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#define N 10
 
void vvod_ochered(int mas[],int *kol,int *end)
{
if((*kol)==N){
printf("\nОчередь заполнена!\n");}
else{
printf("\nВведите элемент очереди:   ");
scanf("%d",&mas[(*end)]);
(*kol)++;
(*end)++;}
}
void poisk_v_ocheredi(int mas[],int end, int start)
{ int f,i,pos=-1;
 printf("Введите искомое число:   ");
 scanf("%d",&f);
 for (i=start;i<end;i++)
  if(mas[i]==f)
   {
    pos = i;
    break;
  }
  if(pos != -1)
  printf("Элемент  %d-й в очереди",pos+1);
 
else printf("Элемента нет");
}
 
 
 
void vivod_ochered(int mas[],int end,int start,int kol)
{
printf("\nОчередь:   ");
int i,j;
j=0;
for(i=end-1;i>=start;i--,j++)
{
if(j<kol)
printf("%d ",mas[i]);
}
}
 
 
void del_ochered(int mas[],int *kol,int *start)
{
if((*kol)==0)
{
printf("\n0 элементов в очереди!\n");
}
else
{
printf("Удалить элемент %d",mas[(*start)]);
(*start)++;
(*kol)--;
}
}
 
int main()
{ setlocale (LC_ALL, "Russian");
int mas[N+20];
int S,n=0,start=0,end=0;
for(;;)
{
 
printf("\n1.Добавление элемента\n2.Удалить элемент\n3.Вывод очереди\n4.Поиск в очереди\n5.Выход\n:");
scanf("%d",&S);
switch(S)
{
case 1:vvod_ochered(mas,&n,&end);break;
case 2:del_ochered(mas,&n,&start);break;
case 3:vivod_ochered(mas,end,start,n);break;
case 4:poisk_v_ocheredi(mas,end,start);break;
case 5:return 0;
}
}
 
 
}
0
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
06.05.2013, 15:17 4
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <stdio.h>
#include <stdlib.h>
 
typedef struct node_t
{
   int value;
   struct node_t* next;
}  TNode;
 
typedef struct queue_t
{
   TNode* head;
   TNode* tail;
}  TQueue;
 
//-----------------------------------------------------------------------------
TQueue* Push(TQueue* queue, int value)
{
   TNode* node = (TNode*) malloc(sizeof(TNode));
   node->value = value;
   node->next = NULL;
 
   if (queue->head && queue->tail)
   {
      queue->tail->next = node;
      queue->tail = node;
   }
   else
   {
      queue->head = queue->tail = node;
   }
 
   return queue;
}
//-----------------------------------------------------------------------------
int Pop(TQueue* queue)
{
   int value = 0;
 
   if (queue->head)
   {
      value = queue->head->value;
      queue->head = queue->head->next;
   }
 
   return value;
}
//-----------------------------------------------------------------------------
int Find(TQueue* queue, int value)
{
   TNode* node = queue->head;
 
   int i = 0;
   for (; node && (node->value != value); node = node->next)
   {
      i++;
   }
 
   return node ? i : -1;
}
//-----------------------------------------------------------------------------
void Print(const TQueue* queue)
{
   const TNode* node = queue->head;
 
   for (; node; node = node->next)
   {
      printf("%d ", node->value);
   }
   printf("\n");
}
//-----------------------------------------------------------------------------
 
int main()
{
   TQueue queue = {NULL, NULL};
 
   printf("Queue operations:\n"
          " 1. Push element\n"
          " 2. View list\n"
          " 3. Pop element\n"
          " 4. Search element\n"
          " any other for quit\n");
 
   int quit = 0;
   int value;
 
   while (!quit)
   {
      printf("command> ");
      fflush(stdin);
 
      switch (getchar())
      {
         case '1':
            printf("element> ");
            if (scanf("%d", &value))
            {
               Push(&queue, value);
            }
            break;
 
         case '2':
            Print(&queue);
            break;
 
         case '3':
            printf("popped:  %d\n", Pop(&queue));
            break;
 
         case '4':
            printf("search>  ");
            if (scanf("%d", &value))
            {
               int pos = Find(&queue, value);
 
               if (pos != -1)
               {
                  printf("%d position\n", pos + 1);
               }
               else
               {
                  printf("element %d not found\n", value);
               }
            }
            break;
 
         default:
            quit = 1;
      }
   }
 
   return 0;
}
Очередь на базе списка: добавление элемента, удаление, поиск в очереди, вывод на экран


Бинарник + исходник: program.7z
3
06.05.2013, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 15:17
Помогаю со студенческими работами здесь

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

Реализация списка.Удаление хвостового элемента.Поиск элемента
Всем привет,мое задание выглядит так : В класс List&lt;T&gt; из классной работы добавить следующие...

Поиск максимального и минимального элемента в очереди, удаление элементов между максимальным и минимальным
Задача следующая: написать функцию, которая ищет максимальный и минимальный элементы в очереди и...

Осуществить добавление и удаление указанного элемента списка
1.реализовать динамические структуры данных список, очередь, стеки. В каждом случае осуществить...


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

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