Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 10:55   #1
Polly0819
 
Регистрация: 11.11.2012
Сообщений: 8
По умолчанию Заполнение списка (Си)

Здравствуйте! Подскажите,пожалуйста,как заполнить список? И как сделать поиск в списке(фильтр по адресу)?
Код:
  1. #include "stdafx.h"
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. struct school
  5. {
  6. char name;
  7. char surname;
  8. char grade;
  9. char sex;
  10. char adress;
  11. char birthday;
  12. struct school *next;
  13. struct school *prew;
  14. } ;
  15. struct school * temp=NULL;
  16. struct school * start=NULL;
  17. void add(int surname)
  18. {
  19. struct school *a=(struct school*)malloc(sizeof(struct school));
  20. a->surname=surname;
  21. a->next=temp;
  22. if (start==NULL){
  23. start=a;
  24. }
  25. else{
  26. temp->prew=a;
  27. }
  28. temp=a;
  29. temp->prew=NULL;
  30. }
  31. void print()
  32. {
  33. struct school *a=temp;
  34. while (a!=NULL){
  35. printf("\n%d -> %p\n", a->surname, a);
  36. a=a->next;
  37. }
  38. }
  39. void search(int adress)
  40. {
  41. struct school *a=temp;
  42. while (a!=NULL){
  43. if (adress==a->surname)
  44. printf("\nves=%d", a->surname);
  45. a=a->next;
  46. }
  47. }
  48. void print1()
  49. {
  50. struct school *a=start;
  51. while (a!=NULL){
  52. printf("\n%d -> %p\n", a->surname, a);
  53. a=a->prew;
  54. }
  55. }
  56. void delite(int adress){
  57. struct school *a=temp;
  58. if (a->surname==adress){
  59. temp=temp->next;
  60. temp->prew=NULL;
  61. return ;
  62. }
  63. while (a->next!=NULL){
  64. if (a->next->surname==adress){
  65. if(a->next->next==NULL){
  66. a->next=NULL;
  67. return ;
  68. }
  69. else
  70. {
  71. a->next=a->next->next;
  72. a=a->next->next;
  73. a->prew=a->prew->prew;
  74. }
  75. return ;
  76. }
  77. else {
  78. a=a->next;
  79. }}
  80. }
  81. int _tmain(int argc, _TCHAR* argv[])
  82. {
  83. getchar();
  84. return 0;
  85. }
Polly0819 вне форума Ответить с цитированием
Старый 25.12.2012, 10:59   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Polly0819

как заполнить список? И как сделать поиск в списке(фильтр по адресу)?

Проще всего - передать это задание тому, кто дал вам эту программу, чтобы он/она/оно её доработал/а
Rififi вне форума Ответить с цитированием
Старый 25.12.2012, 11:22   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Проще всего - передать это задание тому, кто дал вам эту программу, чтобы он/она/оно её доработал/а
Цитата:
char adress;
Вы уверены, что такой человек есть?

Цитата:
Подскажите,пожалуйста,как заполнить список?
Много раз вызвать add().
Цитата:
И как сделать поиск в списке(фильтр по адресу)?
Что такое "фильтр по адресу"?
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 11:22   #4
Polly0819
 
Регистрация: 11.11.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Polly0819

как заполнить список? И как сделать поиск в списке(фильтр по адресу)?

Проще всего - передать это задание тому, кто дал вам эту программу, чтобы он/она/оно её доработал/а
эм...а если такого человека нет? программа была написана по аналогии с найденной в сети,но там было всего одно поле,поэтому и вопрос
Polly0819 вне форума Ответить с цитированием
Старый 25.12.2012, 11:29   #5
Polly0819
 
Регистрация: 11.11.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Вы уверены, что такой человек есть?

Много раз вызвать add().Что такое "фильтр по адресу"?
фильтр по адресу-поиск в списке по адресу
А в функцию add все поля сразу передать или только по одному можно?
Polly0819 вне форума Ответить с цитированием
Старый 25.12.2012, 11:35   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
А в функцию add все поля сразу передать или только по одному можно?
В функцию add надо передавать добавляемый объект или всё, что требуется для создания такого объекта. В Вашем случае её, по всей видимости, необходимо переделать. Проще всего переменовать структуру school в SchoolNode и отдельно создать структуру School, которая будет содержать только "информативные" поля; SchoolNode будет содержать поле типа School и "служебные" поля next, prew.
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 11:50   #7
Polly0819
 
Регистрация: 11.11.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
В функцию add надо передавать добавляемый объект или всё, что требуется для создания такого объекта. В Вашем случае её, по всей видимости, необходимо переделать. Проще всего переменовать структуру school в SchoolNode и отдельно создать структуру School, которая будет содержать только "информативные" поля; SchoolNode будет содержать поле типа School и "служебные" поля next, prew.

вот так будет правильнее?
struct School
{
char name;
char surname;
char grade;
char sex;
char adress;
char birthday;
}
struct SchoolNode
{
struct School *next;
struct School *prew;
} ;
Polly0819 вне форума Ответить с цитированием
Старый 25.12.2012, 12:12   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Нет. Почитайте хотя бы Вики про списки.
Код:
struct SchoolNode
{
  struct School content; //"Содержимое" элемента списка
  struct SchoolNode *next; //"Связки" списка: указатели на следующий
  struct SchoolNode *prew;  //и предыдущий элементы
} ;
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение связного однонаправленного списка с++ Chelovekpredel Помощь студентам 1 07.10.2012 16:39
Заполнение формы из списка nott Microsoft Office Excel 6 01.08.2012 11:26
Паскаль. Случайное заполнение списка. Silverstone Помощь студентам 3 25.05.2012 11:21
Создание и заполнение динамического списка m@dman Помощь студентам 6 17.10.2010 09:56
Заполнение списка StasSv Microsoft Office Excel 2 01.11.2008 15:13