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

Списки - C++

Восстановить пароль Регистрация
 
elekctra
Сообщений: n/a
07.06.2011, 18:41     Списки #1
Нужно создать однонаправленный список,для этого реализовать функции работы со списком:
-добавление нового элемента;
-вывод/удаление k-того элемента от текущей позиции влево;
-вывод/удаление текущего элемента;
-поиск элемента по значению;
-печать всего списка.

Вот что я смогла сделать
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct list
{
int info;
struct list *next;
}list;
void enqueue(list **l)
{
list *prev, *cur;
prev=new list;
prev->info=0;
prev->next=NULL;
*l = prev;
int n=0,i;
 
printf("Enter size:");
scanf("%d", &n);
 
for( i=1; i<=n; i++)
{
cur = new list;
prev->next = cur;
cur->next = NULL;
printf("Enter element %d: ",i);
scanf("%d",&cur->info);
prev = prev->next;
}
}
int insert (list **l, int i)
{
    list *new_n;
    list *prev, *cur;
    new_n=(list*)malloc(sizeof(list));
    if(new_n==NULL) return -1;
    if(*l==NULL)
    {
        *l=new_n;
        new_n->next =NULL;
        return 1;
    }
    cur=*l;
    while(cur)
    {
        prev=cur;
        cur=cur->next ;
        if((cur!=NULL)&&(cur->info>i)) break;
    }
        if((*l)->info<i)
        {
            new_n->next =cur;
            prev->next =new_n;
            printf("new_n %d\n",new_n);
            printf("%d\n",cur);
            printf("prev=%d\n",prev);
        }
        else
        {
            new_n->next =*l;
            printf("l=%d ",*l);
            *l=new_n;
            printf("new_n %d\n",new_n);
            printf("l  %d ",*l);
        }
        return 1;
}
void display(list *l)
{
  while (l!=NULL)
  {
      printf("%d ",l->info);
      l=l->next;
  }
}
int main()
{
int i;
list *l=NULL;
enqueue(&l);
puts("input i");
scanf("%d",&i);
insert(&l,i);
display(l);
}
Новый элемент не добавляется,вместо него добавляется какое-то странное число.
Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 18:41     Списки
Посмотрите здесь:

C++ C++ списки
C++ Списки в С++
C++ списки
Списки C++
C++ списки
С++ списки C++
C++ Списки
Списки в c++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru