Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Заблокирован
1

Стек на основе связного списка

29.07.2018, 17:04. Показов 927. Ответов 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
108
109
110
111
112
113
114
115
116
117
#include <stdio.h>
#include <stdlib.h>
 
const int FALSE = 0;
const int TRUE = 1;
 
struct Node
{
  int value;
  struct Node* next;
};
 
// begin: Node
struct Node* nodeInitializer3(struct Node* ptr, int x, struct Node* next);
struct Node* nodeInitializer2(struct Node* ptr, int x);
struct Node* nodeInitializer(struct Node* ptr);
struct Node* nodeClone(struct Node* ptr);
void nodePrint(struct Node* ptr);
void nodePrintln(struct Node* ptr);
// end: Node
 
// begin: Stack
void stackPush(struct Node** ptr, int x);
int stackPop(struct Node** ptr);
void stackPrint(struct Node* ptr);
void stackPrintln(struct Node* ptr);
// end: Stack
 
struct Node* nodeInitializer3(struct Node* ptr, int x, struct Node* next)
{
  ptr = malloc(sizeof(*ptr));
  ptr->value = x;
  ptr->next = next;
  return ptr;
}
 
struct Node* nodeInitializer2(struct Node* ptr, int x)
{
  return nodeInitializer3(ptr, x, NULL);
}
 
struct Node* nodeInitializer(struct Node* ptr)
{
  return nodeInitializer2(ptr, 0);
}
 
struct Node* nodeClone(struct Node* ptr)
{
  struct Node* copy = malloc(sizeof(*ptr));
  copy->value = ptr->value;
  copy->next = ptr->next;
  return copy;
}
 
void nodePrint(struct Node* ptr)
{
  printf("%d", ptr->value);
}
 
void nodePrintln(struct Node* ptr)
{
  printf("%d\n", ptr->value);
}
 
void stackPush(struct Node** ptr, int x)
{
  struct Node* node = nodeInitializer3(node, x, *ptr);
  *ptr = node;
}
 
int stackPop(struct Node** ptr)
{
  int value = 0;
  if (*ptr == NULL)
  {
    printf("ptr is NULL");
  }
  else
  {
    value = (*ptr)->value;
    *ptr = (*ptr)->next;
  }
  return value;
}
 
void stackPrint(struct Node* ptr)
{
  struct Node* current = ptr;
  printf("[");
  while (ptr != NULL)
  {
    nodePrint(current);
    if (ptr->next != NULL)
    {
      printf(", ");
    }
    ptr = ptr->next;
  }
  printf("]");
}
 
void stackPrintln(struct Node* ptr)
{
  stackPrint(ptr);
  printf("\n");
}
 
int main(void)
{
  struct Node* head;
  for(int i = 0; i < 10; i++)
  {
    stackPush(&head, 1);
  }
  stackPrintln(head);
  return 0;
}
Выдает: exit status -1.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2018, 17:04
Ответы с готовыми решениями:

Написать программу, реализующую стек на базе односторонне связного списка и стандартные операции push, pop
Написать программу, реализующую стек на базе односторонне связного списка и стандартные операции со...

Стек на основе односвязного списка
Ребят, помогите пожалуйста! Ошибка в функции push. Только я не знаю как ее исправить. Я в отчаянии...

Класс стек, наследованный от связного списка
Как я понял из текста, что для методов isEmpty и print класса List нужен какой-то аргумент....

Реализация АТД стек на базе связного списка
Здравствуйте, очень прошу вашей помощи. Необходимо реализовать стек на базе связного списка, а я...

2
Заблокирован
30.07.2018, 08:16  [ТС] 2
Тема актуальна.
0
424 / 272 / 159
Регистрация: 30.04.2017
Сообщений: 534
30.07.2018, 16:24 3
Лучший ответ Сообщение было отмечено Стив Роджерс как решение

Решение

Стив Роджерс,
Ошибка на строке 110 -
struct Node* head = NULL;
Если указатель не будет занулен, то распечатка через метод stackPrintln() не будет корректно срабатывать.
На строке 92 опечатка - должно быть
nodePrint(ptr);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2018, 16:24

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Умножение многочленов на основе связного списка
Написал код по созданию многочленов, не могу понять как реализовать их умножение. class...

Написать функцию полного удаления списка на основе связного хранения
Помогите составить такую функцию! Добавлено через 14 минут *связного

Стек на основе списка
Всем привет, нужна ваша помощь в решении следующей задачи: Из элементов двух стеков, хранящих...

Написать стек на базе массива, и на базе связного списка
Всем привет. Помогите пожалуйста ! Надо написать стек на базе массива, и на базе связного списка....

Стек на основе связанного списка C++
Привет:) Мне нужно разработать функции занесения и извлечения данных стека на основе связанного...

Стек на основе односвязного списка (доработать код)
Написать класс &quot;стек&quot; (первый пришел, последний ушел) на основе односвязного списка. Реализовать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.