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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2009, 09:07   #1
paladinn
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 26
По умолчанию списки , помогите доделать код.

Код:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>

struct elem
{
int data;
elem *next;
};

elem *create(void)
{
int n;
elem *p,*q;
p=NULL;
cout<<"vvedite n:";
cin>>n;
if(n>0)
{
p=new elem;
int i;
cin>>p->data;
q=p;
for(i=1;i<n;i++)
{
q->next=new elem;
q=q->next;
cin>>q->data;
}q->next=NULL;
}
return p;
}

void out(elem *p)
{
elem *q;
if(p==NULL) cout<<"spisok pust"<<endl;
else {
q=p;
while (q!=NULL)
{
cout<<q->data<<" ";
q=q->next;
}
cout<<endl;
}
}

elem *udalenie(elem*p,elem*q)
{
elem*w=p;
while(w->next!=q)
w=w->next;
w->next=q->next;
delete q;
return p;
}

elem* vstavka(elem *p)
{
int k,i,i1;
elem *q,*q1,*q2,*q3;
cout<<"vvedite kakoi nomer vstavl"<<endl;
cin>>i1;
cout<<"Vvedite element: ";
q1=new elem;
cin>>q1->data;
if(i1==1)
{
q1->next=p;
p=q1;
}
else{
q=p;
for(i=2;i<i1;i++) q=q->next;
q2=q->next;
q->next=q1;
q1->next=q2;
}
out(p);
return p;
}

void vvod(elem *p,char*s)
{ int t;
FILE *f;
f=fopen(s,"w+");
elem *q;q=p;
while(q!=NULL)
{ t=q->data;
fwrite(&t,sizeof(int),1,f);
q=q->next;
}
rewind(f);
fclose(f);
}

elem* destr(elem *p)
{
elem *q=p,*w;
while(q->next!=NULL)
{q=p->next;
udalenie(p,q);
}
delete q;
p=NULL;
return p;
}

elem* vivid(char *s)
{FILE *f;
int a;
elem *q,*p,*q1;
f=fopen(s,"r");
p=new elem;
fread(&a,sizeof(int),1,f);
p->data=a; p->next=NULL;
q=p;
fread(&a,sizeof(int),1,f);
while(!feof(f))
if(!feof(f))
{ q->next=new elem;q1=new elem; q1=q;q=q->next;q1->next=q; q->data=a;
fread(&a,sizeof(int),1,f);
}
q->next=NULL;
rewind(f);
fclose(f);
return p;
}


void main()
{
clrscr();
elem *p,*q;int n;
p=create();
cout<<" spisok: ";
out(p);
cout<<"vvedite nomer elem cotoriy udal: ";
cin>>n;
q=p;
for(int i=1;i<n;i++)q=q->next;
udalenie(p,q);
out(p);
p=vstavka(p);
char *s="D:\\f.txt";
vvod(p,s);
p=destr(p);
cout<<"Destr Spisok: ";
out(p);
cout<<"Is file: ";
out(vivid(s));
getch();
}
парни кто может сделать так : Удалить из него k элементов после элемента с заданным номером, добавить k элементов после элемента с заданным номером; помогите а ? очень срочно нужно

Последний раз редактировалось Sazary; 20.06.2009 в 13:26.
paladinn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите доделать код на Си osichev Общие вопросы C/C++ 0 08.06.2009 20:39
Помогите доделать код!!НА СИ osichev Помощь студентам 0 08.06.2009 20:27
Помогите доделать код! Al3x Общие вопросы C/C++ 6 22.12.2008 19:06
Помогите доделать на списки VANOLORD Паскаль, Turbo Pascal, PascalABC.NET 5 21.05.2008 18:30