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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2012, 23:56   #1
scrinn
Пользователь
 
Регистрация: 20.05.2012
Сообщений: 10
Восклицание c++ написать функцию удаления последнего элемента из списка

Вот программа, нужно чтобы удалялся последний элемент списка
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAXDL 9         /* макс.длина ид-ра (строки символов с признаком конца '\0' ) */
struct EL_SP           /* тип элемента списка */
	{ char id [MAXDL];       /* идентификатор */
struct EL_SP *sled;                 /* ссылка на следующий элемент */
};
/* функция включения очередного идентификатора в список */
void Vkl ( struct EL_SP **p, char t_id[] )
/* Вх. данные: *p - указатель списка идентификаторов в лексикографическом порядке,t_id - включаемый в список (текущий) ид-р */
/* Вых. данные: *p */	
{ struct EL_SP *pt,  /* указатель включаемого эл-та */
*k,*j;  /* указатели очередного и предыдущего элементов списка */
/* выделение памяти для нового эл-та списка */
pt = (struct EL_SP *) malloc(sizeof(struct EL_SP));
strcpy(pt->id, t_id);
if (*p==NULL || strcmp(pt->id,(*p)->id) < 0)
{ /* включение ид-ра в начало списка */
pt->sled=*p; *p=pt;
}
else/* поиск элемента списка, после которого нужно  включить идентификатор */
	{ 

k=*p;
while (k!=NULL && strcmp(pt->id,k->id)>=0)
{ j=k; k=k->sled;
}
/* включение эл-та *pt после элемента *j */
j->sled=pt; pt->sled=k;
}
}
/* функция печати списка */
void PechSp ( struct EL_SP *p )
/* Вх. данные: p - указатель начала списка */
{ struct EL_SP *i;  /* указатель текущего элемента списка */
printf ("\n rezultat:\n");
for ( i=p; i!=NULL; i=i->sled )
puts (i->id);
}
/* О С Н О В Н А Я П Р О Г Р А М М А */
int main()
{ struct EL_SP *p;  /* указатель начала списка */
unsigned n ;         /* количество идентификаторов */
unsigned i ;          /* параметр цикла */
char t_id[MAXDL];       /* текущий идентификатор */
printf ("\n vvedite chislo identifikatorov\n n=");
scanf ("%u",&n);
getchar();             /* пропуск символа "перевод строки" */
p=NULL;                 /* список пока пуст */
printf ("vvedite identifikatori ");
printf ("(posle kajdogo najimat <Enter> )\n");
for ( i=1; i<=n; i++ )
{ gets (t_id);
Vkl (&p,t_id); 
}
PechSp (p); 
printf ("\n\n dlya zaversh lubuu knoplu\n");
getch();
}
Вот что я нашел по этому вопросу но я не знаю как перегнать это под свою программу и включить это в нее
Код:
void removelast(Listnode **head)
{
   Listnode *ptr1, *ptr2;
    
   if (*head == NULL)
      return;
   if ((*head)->next == NULL) {
      free(*head);
      *head = NULL;
      return;
   }
   for (ptr1 = *head, ptr2 = (*head)->next;
      ptr2->next != NULL;
      ptr1 = ptr2, ptr2 = ptr2->next)
         ;
   free(ptr2);
   ptr1->next = NULL;
}
и
Код:
if (beg==0) printf("список пуст");
else if (beg->pc==0) delete beg;
else { 
  weight *p=beg;
  while (p->pc->pc) p=p->pc;
  end = p;
  delete p->pc;
  end->pc=0;
}
scrinn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление последнего элемента списка(C) labrador Помощь студентам 0 23.05.2012 21:25
Программа удаления элемента из конца связанного списка. zeroakaking Помощь студентам 2 01.07.2011 13:18
Сумма ряда с точностью Е=10-4, Сформировать обномерный массив, написать функцию для удаления строки... Dasha M Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2011 18:33
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12
написать с помощью рекурсии функцию поиска последнего слова в строке? - Си Cvetok Помощь студентам 1 13.05.2008 15:43