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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2015, 21:51   #1
Дана188
Пользователь
 
Регистрация: 14.10.2014
Сообщений: 21
По умолчанию Двусвязный список: Как реализовать подсчет количества элементов в списке и поиск индекса элемента по его имени?

Как реализовать подсчет количества элементов в списке и поиск индекса элемента по его имени.

Последний раз редактировалось Вадим Мошев; 06.05.2015 в 22:00.
Дана188 вне форума Ответить с цитированием
Старый 07.05.2015, 05:28   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

А наработки какие-нибудь есть....??? Например создание списка.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 13.05.2015, 16:30   #3
Дана188
Пользователь
 
Регистрация: 14.10.2014
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
А наработки какие-нибудь есть....??? Например создание списка.
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <intrin.h>
using namespace std;
struct Node
{
	string name;
	struct Node *next;  //следующий елемент
	struct Node *previous;   //предидущий елемент
};
Node *head = NULL;   //голова
Node *last = NULL;    //хвост
Node *current = NULL;    //текущий
Node *temp = NULL;       //проодящее
Node *newList = NULL;
/* Процедура создания добавления в список */
void add_name(string s)
{
	if (head != NULL)
	{
		newList = new Node;
		newList->name = s;
		newList->next = NULL;
		newList->previous = current;
		current->next = newList;
		last = newList;
		current = newList;
	}
	else
	{
		newList = new Node;
		newList->name = s;
		head = newList;
		newList->next = NULL;
		newList->previous = NULL;
		current = newList;
		last = head;
	}
}
/* Процедура поиска узла */
void search_unit(string name)
{
	newList = head;
	while (newList != last->next)
	{
		if (newList->name == name)
		{
			cout << "Element was found\n";
		}
		newList = newList->next;
	}
}

/* Процедура удаления узла */
void delete_unit(string name)
{
	newList = head->next;

	if (newList->name == name)
	{
		temp = newList->previous;
		temp->next = newList->next;
		temp = newList->next;
		temp->previous = newList->previous;
		free(newList);
	}
	newList = newList->next;
}
	/* Процедура вывода списка слева направо */
	void show_list(void)
	{
		struct Node *info;
		info = head;
		while (info)
		{
			cout << info->name << " ";
			info = info->next;
		}
		cout << "\n";
	}

	/* Тело основной программы */
	int main(void)
	{
		string enter_name;
		int key = -1;
		while (key)
		{
			cout << "1. Enter name\n";
			cout << "2. Delete name\n";
			cout << "3. Show names\n";
			cout << "4. Search\n";
			cout << "5. Time";
			cout << "0. Exit\n";
			cin >> key;
			switch (key)
			{

			case 1:
			{
					  cout << "Enter name or press ENTER to exit \n";
					  cin >> enter_name;
					  add_name(enter_name);
					  break;
			}
			case 2:
			{
					  cout << "Enter unit for deleting\n";
					  cin >> enter_name;
					  delete_unit(enter_name);
					  cin.get();
					  cin.get();
					  break;
			}
			case 3:
			{
					  cout << "List from left to right\n";
					  show_list();
					  break;
			}
			case 4:
			{
					  cout << "Enter name for search ";
					  string search_name;
					  cin >> search_name;
					  search_unit(search_name);
					  cin.get();
					  cin.get();
					  break;
			}
			case 5:
			{
					  long long tStart = __rdtsc();;       // Измеряет время выполнения алгоритма
					  long long tEnd = __rdtsc();
					  std::cout << (tEnd - tStart) << std::endl;
					  system("pause");
					  break;
			}
			case 0:
			{
					  cout << "Bye\n";
					  cin.get();
					  cin.get();
					  break;
			}
			default:
			{
					   cout << "Error\n";
					   cin.get();
					   cin.get();
					   break;
			}
				if (key == 0) break;
			}
		}
		return 0;
	}

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 13.05.2015 в 16:54.
Дана188 вне форума Ответить с цитированием
Старый 13.05.2015, 16:32   #4
Дана188
Пользователь
 
Регистрация: 14.10.2014
Сообщений: 21
По умолчанию

вот только эти две функции не смогла сделать.
Дана188 вне форума Ответить с цитированием
Старый 13.05.2015, 16:45   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Поместите свой код в теги #
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать список л3 из элементов входящих и в список л1 и в список л2 goosha_gio C++ Builder 1 27.06.2013 22:22
Копирование, перемещение листа, выподающий список список albih Microsoft Office Excel 1 31.05.2012 12:49
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание Zigfried Помощь студентам 2 04.10.2010 20:29
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43