Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
#include <stdio.h> #define NAME_SIZE 30
struct NODE
{
struct listnode*pred;
struct listnode*succ;
char data[NAME_SIZE]; };
main()
{
char name [NAME_SIZE];
struct NODE *root; /^Голова списка.*/
struct NODE *np; /^Используется при просмотре.*/
/*3анять блок памяти для головы списка и иницилизировать его так, чтобы он показывал сам на себя.*/ root=malloc(sizeof(struct NODE));
root->pred= root->succ=root; root->data[0]='\0';
/^Создать связанный список имен.*/ for (;;)
{
printf ("имя:");
gets (name);
if (strcmp(name), "конец")==0)
break; if (insert(root, name)==0)
{
printf ("не хватает динамической памяти \п"); exit(1); } } /^Изобразить содержимое списка.*/
for (np=root->succ; np!=np->succ) printf ("имя=%з \n", np->data);
printf ("работа закончена \п"); }
/^Зарезервировать память для нового узла списка; скопировать в него имя и вставить новый узел в список в алфавитном порядке. Возвратить либо указатель на новый узел, либо NULL, если для создания узла не хватило памяти.*/
struct NODE *insert (node, name); struct NODE *node; /*Голова списка.*/ char *name;
{
NODE *np; /*Узел списка.*/ NODE *newnode;
/*Узел, вставленный в список.*/
/*Просматривать список, пока не обнаружится узел, поле info которого имеет значение, большее введенного имени или равное ему.*/
for (np=node->succe; (np!=node) &&
strcmp (name, np->data)>0); np=np->succe);
/^Зарезервировать память для нового узла; поместить введеное имя в его поле info и вставить новый узел перед тем, на который показывает указатель пр.*/
if((newnode=malloc(sizeof(struct NODE)))!=0) {
strncpy(newnode->data, name, №\ME_SIZE);
newnode->succ=np;
newnode->pred=np->pred;
/^Изменить прямой указатель в узле, предшествующем вставленному (теперь он должен показывать на вставленный узел) и изменить обратный указатель в узле, следующем за вставленным.*/
(newnode->pred)->succ=newnode; np->pred=newnode; }
return (newnode); }
Дата публикования: 2014-11-04; Прочитано: 299 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!