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

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

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

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

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

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

Организация списков с помощью указателей и структур
Дан список идентификаторов. Длина каждого идентификатора не более
8 символов. Идентификаторы в списке расположены в лексикографическом
порядке. Составить функции (подпрограммы) для следующих операций:
Удалить из списка предпоследний элемент


Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define  MAXDL  9
struct EL_SP
{
char id [MAXDL];
struct EL_SP *sled;
};

void Vkl ( struct EL_SP **p, char t_id[] )
{ 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;
}

j-> sled=pt; pt->sled=k;
}
}

void PechSp ( struct EL_SP *p )
{ struct EL_SP *i;
printf ("\n Rezultat\n");
for ( i=p; i!=NULL; i=i->sled )
puts (i->id);
}


void DelPredLAST(struct EL_SP *p,int n, char t_id[])
{
int i=0;
struct EL_SP *pt;
for ( pt=p; pt!=NULL; pt=pt->sled )
{
puts (pt->id);
 i++;
 if (i>=n-2) {pt=pt->sled; pt=pt->sled;puts (pt->id); break;}
}


}

main()
{ struct EL_SP  *p;

unsigned n ;


unsigned i ;

char t_id[MAXDL];

printf ("\n Vvedite chislo identefikatorov\n n=");
scanf ("%u",&n);
if (n!=2 && n !=1 && n!=0)
getchar();
p=NULL;
printf ("( Posle kazhdogo nazhmite klavishu  <Enter> )\n");
for ( i=1; i<=n; i++ )
{

gets (t_id);
Vkl (&p,t_id);

}
PechSp (p);
printf("\nAfter clear 2 LAST\n") ;
if(n==2) printf("Spisok pust");
if (n!=2 && n !=1 && n!=0)
{
DelPredLAST(p,n,t_id);
 }

if(n==1)printf("Nedopustimaya operaciya");
if(n==0)printf("Nedopustimaya operaciya");
printf ("\n\n dlya zaversheniya nazhmite lubuyu klavishu\n");
getch();
}
Нужно переделать программу чтобы удалялся последний элемент.Спасибо
scrinn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать программу maks133 Паскаль, Turbo Pascal, PascalABC.NET 1 04.05.2011 15:07
переделать программу с C# на С++ Loka Помощь студентам 4 03.12.2010 23:25
нужно переделать программу Real7 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 24.12.2009 16:43