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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2009, 14:55   #1
Annenen
 
Регистрация: 17.02.2009
Сообщений: 8
По умолчанию Список на Си

Надо описать процедуру удаляющую из непустого списка последний элемент. Как достучаться до последнего элемента вроде бы понятно, в цикле задать условие чтобы след. элемент не был равен null. Но абсолютно не понятно как организовывать список. Как быть?
Annenen вне форума Ответить с цитированием
Старый 17.02.2009, 16:14   #2
HeaD
 
Регистрация: 21.01.2009
Сообщений: 7
По умолчанию

попробуй так
#include <iostream>
#include <string.h>
using namespace std;
void main()
{
char pisyak[20];//обьявляем масив символов

cin>>pisyak;//ввод с клавы

int i=strlen (pisyak);//Определям кол во символов
cout<<i<<'\n';//на екран кол-во
pisyak[i-1]=NULL;//Хвостовой удаляем
i=strlen (pisyak);//длина после удаления
//смотрим теерь кол-во
cout<<i<<'\n';
//выводим укороченый список
cout<<pisyak<<'\n';

}
//контрольные выводы на екран по удаляеш
Ps// добавь мне репутации )
HeaD вне форума Ответить с цитированием
Старый 17.02.2009, 17:51   #3
Annenen
 
Регистрация: 17.02.2009
Сообщений: 8
По умолчанию

ну это не плохо=)) вот только мне надо, по идеи не обнулить последний, а как я понимаю разоименовать указатель и через delete. и вообще delete он очищает память или обнуляет элемент?
Annenen вне форума Ответить с цитированием
Старый 17.02.2009, 18:15   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

delete очищает память.
Небольшой пример. Создается массив из 3-х чисел, затем удаляется последнее.
Код:
#include <iostream>
#include <conio.h>
using namespace std;

class spisok
{
 private:
int *mas;
int len;
public:
spisok();
~spisok();
void dellast();
void printsp();
};

spisok::spisok()
{
mas = new int[3];
for(int i=0;i<3;i++)
 mas[i] = i;
len = 3;
}
spisok::~spisok()
{
delete[] mas;
}

void spisok::dellast()
{
 int *tmpmas;
 tmpmas = new int[len-1];
 for(int i=0;i<len-1;i++)
  tmpmas[i] = mas[i];
 delete[] mas;
 mas = new int[len-1];
 mas = tmpmas;
 delete[] tmpmas;
 len = len - 1;
}

void spisok::printsp()
{
 for(int i=0;i<len;i++)
  cout<<mas[i]<<" ";
 cout<<endl<<endl;
}

int main(){
spisok sp;
sp.printsp();
sp.dellast();
sp.printsp();

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.02.2009, 18:19   #5
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

HeaD и Sazary, список и массив не одно и тоже. Annenen, что бы ответить на ваш вопрос нужно точно знать какой именно список используется (стек, очередь,…). А вообще нужно было как минимум почитать что-нибудь о списках прежде чем задавать вопрос.
Игорь007 вне форума Ответить с цитированием
Старый 17.02.2009, 18:36   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Игорь007
список и массив не одно и тоже
Я хотел проиллюстрировать именно использование delete.
Класс так назвал (spisok), потому что это первое пришло в голову.

Кроме того, если немного изменить пример и написать функцию добавления элемента, то получится простенькая реализация стека. )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.02.2009, 18:51   #7
Annenen
 
Регистрация: 17.02.2009
Сообщений: 8
По умолчанию

блин, у меня банально си, не ++ т.е. классов там нет. по поводу списка, я его могу охарактиризовать как одно/двухсвязанный или а-/циклический. из моего понимания стека, я предполагаю что на вопрос "какой именно список используется" надо ответить очередь.
просто у меня теоретическое представление о списке(в очень общих чертах), при этом абсолютно нет листингов, то что я находил написано на с++ со всякими классами и большими нагромождениями.
я в примере привёл последний элемент, потому что, как я понимаю если список ациклический, то посл. элемент не содержит ссылку на следующий. я правильно понимаю?
Annenen вне форума Ответить с цитированием
Старый 17.02.2009, 18:53   #8
Annenen
 
Регистрация: 17.02.2009
Сообщений: 8
По умолчанию

вот эти ссылки(связи) как-то в коде отображаются?
Annenen вне форума Ответить с цитированием
Старый 17.02.2009, 19:04   #9
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Динамический список или статический?
Игорь007 вне форума Ответить с цитированием
Старый 17.02.2009, 19:06   #10
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от Игорь007 Посмотреть сообщение
HeaD и Sazary, список и массив не одно и тоже. Annenen, что бы ответить на ваш вопрос нужно точно знать какой именно список используется (стек, очередь,…). А вообще нужно было как минимум почитать что-нибудь о списках прежде чем задавать вопрос.
списки можно организовать и на основе массива, но это в удобно в том случае если известно конечное количество элементов списка

по спискам можно глянуть тут
http://khpi-iip.mipk.kharkiv.edu/lib...gsu/oglav.html
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43
Добавление в список ManU Помощь студентам 3 28.09.2008 12:55
Двухсвязный список StarScream2008 Общие вопросы C/C++ 1 19.09.2008 20:04
Список панелей Кронос Общие вопросы Delphi 1 23.08.2007 16:27