→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Динамические структуры данных в С 
Автор Сообщение
Начинающий
Аватара пользователя

Регистрация: 07.01.2012
Сообщения: 2
Специальность:

Репутация: 0 [ ? ]
Сообщение Динамические структуры данных в С
Задание. Изъятие элементов. Формируется новый список по входному списку путем изъятия из него элементов, которые размещены непосредственно перед элементом со значением Х.
Пример, входной список: 1 2 3 4 5 6 3 7 8 9 3
Х=3
выходной список: 1 3 4 5 3 7 8 3

Вот похожая программа, которая удаляет первое вхождение Х:
Пример, входной список: 1 2 3 4 5 6 3 7 8 9 3
Х=3
выходной список: 1 2 4 5 6 3 7 8 9 3


#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

#define Item struct Item
//------------------------------------------------------------------------
Item{
int data;
Item *next;
};
//------------------------------------------------------------------------
Item *head;
Item *tail;
void addItem(int);
void delItem(int);
void printList();
void readList();
//------------------------------------------------------------------------
void main(void){
int a;

printf("Enter list\n");
readList();
printf("Enter item\n");
scanf("%d",&a);

printList();
delItem(a);
printList();
getch();
}
//------------------------------------------------------------------------
void addItem(int data){ //в конец
Item *temp;
if(temp=(Item*)malloc(sizeof(Item))){
if(head==NULL){
head=temp;
}else{
tail->next=temp;
}
temp->next=NULL;
temp->data=data;
tail=temp;
}else{
printf("Memory allocation error! Item not deleted.\n");
getch();
exit(0);
}
}
//------------------------------------------------------------------------
void delItem(int data)
{
Item *temp, *old;
if(head==NULL){
printf("List is empty!\n");
}else{
if(temp=(Item*)malloc(sizeof(Item))){
temp=head;
}else{
printf("Memory allocation error! Item not deleted.\n");
getch();
exit(0);
}

if(old=(Item*)malloc(sizeof(Item))){
old=NULL;
}else{
printf("Memory allocation error! Item not deleted.\n");
getch();
exit(0);
}

while(temp){
if(temp->data==data){
if(old!=NULL){
old->next=temp->next;
}else{
head=temp->next;
}
free(temp);
temp=NULL;
printf("Item is deleted successfully\n");
}else{
old=temp;
temp=temp->next;
}
}
}
}



//------------------------------------------------------------------------
void printList(){
Item *temp;
if(temp=(Item*)malloc(sizeof(Item))){
temp=head;
}else{
printf("Memory allocation error!\n");
getch();
exit(0);
}
if(temp==NULL){
printf("List is empty!\n");
}else{
while(temp){
printf((temp->next)?"%d -> ":"%d",temp->data);
temp=temp->next;
}
printf("\n");
}
}
//------------------------------------------------------------------------
void readList(){
char *p;
char *str=(char*)malloc(100);
int temp;

tail=NULL;
head=NULL;

gets(str);

p=strtok(str," ");
sscanf(p,"%d",&temp);
addItem(temp);
while(p=strtok('\0'," ")){
sscanf(p,"%d",&temp);
addItem(temp);
}
}
//------------------------------------------------------------------------

то, что я выделила, я так понимаю, это и есть решение задачи

Помогите, пожалуйста!


07.01.2012 19:44
Профиль Отправить email
Начинающий
Аватара пользователя

Регистрация: 07.01.2012
Сообщения: 2
Специальность:

Репутация: 0 [ ? ]
Сообщение Re: Динамические структуры данных в С
задача решена


08.01.2012 14:43
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»