4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
1

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

24.04.2011, 13:17. Показов 21649. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста..Сколько читаю ничего не понимаю(Большинство с классами...которые мы не изучали.
Понимаю что должно быть значение и указатель на следующий элемент.
Создаем структуру
C
1
2
3
4
5
struct node
{
int value;
node *next;
}
Как сформулировать всё дальше(надеюсь на помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2011, 13:17
Ответы с готовыми решениями:

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

Создать односвязный список о книгах
Помогите реализовать односвязный список ... #include <stdio.h> #include <stdlib.h> #include...

Создать и заполнить линейный односвязный список
Здравствуйте! Мне нужно создать и заполнить линейный односвязный список. Вот код, который у меня...

Из введенных слов создать односвязный кольцевой список
Доброй ночи Задача звучит так: Из введенных слов создать односвязный кольцевой список. Далее,...

5
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.04.2011, 13:24 2
yuliyayuliya28,

C
1
2
3
4
5
struct list
{
    struct node* head;
    struct node* tail;
};
Ну и дальше функции)
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
24.04.2011, 13:35  [ТС] 3
Зачем ещё одна структура((((
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.04.2011, 13:43 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
#include <stdio.h>
#include <stdlib.h>
 
struct node
{
    int elem;
    struct node* next;
};
 
typedef struct node Node;
 
struct list
{
    Node* head;
    Node* tail;
};
 
typedef struct list List;
 
void initializeList(List* lst)
{
    lst->head = 0;
    lst->tail = 0;
}
 
void push_back(List* lst, int numb)
{
    Node* t = (Node*) malloc(sizeof(Node));
    t->elem = numb;
    t->next = 0;
    if(lst->head == 0)
    {
       lst->head = t;
       lst->tail = t;
       return;
    }
    lst->tail->next = t;
    lst->tail = t;
}
 
void print_list(const List* const lst)
{
    for(Node* tmp = lst->head; tmp; tmp = tmp->next)
        printf("%d\n", tmp->elem);
}
 
void free_list(List* lst)
{
    lst->tail = lst->head;
    while(lst->head)
    {
       lst->head = lst->head->next;
       free(lst->tail);
       lst->tail = lst->head;
    }
}
 
int main()
{
    List lst;
    initializeList(&lst);
    push_back(&lst, 10);
    push_back(&lst, 15);
    push_back(&lst, 25);
    push_back(&lst, 1);
    print_list(&lst);
    free_list(&lst);
}
Добавлено через 1 минуту
yuliyayuliya28, Для удобства. Очевидно же. Список - это структура данных, состоящая из узлов.
0
Программист
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
24.04.2011, 13:49 5
Вот вам в помощь: http://lord-n.narod.ru/downloa... 2/2205.htm
Если возникнут проблемы - пишите...
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
24.04.2011, 23:08  [ТС] 6
Немного попыталась разобраться.....но мой код не работает.....объясните пожалуйста что не так и как исправить....



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
#include "stdafx.h"
#include <conio.h>
#include "iostream"
#include <time.h>
 
 using namespace std;
 
struct node
{
    int value;
    node *next;int a;
}
 
void main(void);
{
srand(time(NULL));  
 
cin<<a<<endl;
 
    node* head;
    head= new node;
    head ->value=5;
    node* tmp;
    node* tmp1;
    tmp=head;
    for(int i=0;i<a;i++)
    {
        tmp1=new node;
        tmp1->value=rand()%10;
        tmp->next=tmp1;
        tmp1->next=NULL;
        tmp=tmp1;
    }
    for(head;tmp1!=NULL;tmp1->next)
        cout<<tmp1->value;
    getch();
 
}
Добавлено через 58 минут
С горем попалам список создала....получается удалить первый элемент......как удалить любой элемент из списка равный n?



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
#include "stdafx.h"
#include <conio.h>
#include "iostream"
#include <time.h>
 
using namespace std;
 
struct node
{
int value;
node *next;
};
 
void main (void)
{
int a;
int n;
srand(time(NULL));
 
cin>>a;
cin>>n;
cout<<endl;
 
node* head;
head= new node;
head ->value=5;
node* tmp;
node* tmp1;
tmp=head;
for(int i=0 ;i<a;i++)
{
tmp1=new node;
tmp1->value=rand()%10;
tmp->next=tmp1;
tmp1->next=NULL;
tmp=tmp1;
}
cout<<"Поидем дальше вывод...";
for(tmp1=head;tmp1!=NULL;tmp1=tmp1->next)
cout<<tmp1->value<<" ";
cout<<endl;
 
node*temp=head;//Удаляем первый элемент
  head = head->next;
  delete temp;
 
 
  for (tmp1=head; tmp1!=NULL;tmp1=tmp1->next)
      if (tmp1->value!=n) delete tmp1;
 
for(tmp1=head;tmp1!=NULL;tmp1=tmp1->next)
cout<<tmp1->value<<" ";
 
getch();
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2011, 23:08
Помогаю со студенческими работами здесь

Создать односвязный список и добавить в него элементы
помогите, пожалуйста. нужен код: создать односвязный список, тип информационного поля char*,...

Создать кольцевой односвязный список, элементы которого будут вводиться с клавиатуры
Нужно сделать кольцевой односвязный список, элементы которого будут вводиться с клавиатуры. Я...

Создать новый односвязный список, который содержит элементы заданного списка в порядке убывания
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит...

Испльзуя массив структур создать список
Помогите оооочень срочно пожалуста) если фастом дам денех) задача сама выглядит так: Используя...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru