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

Форум программистов: 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 ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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