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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 18:30   #1
Salatiq
 
Регистрация: 14.05.2012
Сообщений: 3
По умолчанию Неоднородный список на языке Си.

Необходимо реализовать добавление элемента после элемента с указанным номером, в неоднородный кольцевой список. Неоднородный список вроде реализовал, а как вставлять вообще не имею представления. Прошу помочь.
Получилось что-то такое:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct Node1 *link1;
typedef struct Node2 *link2;
typedef char elemtype1;
typedef int elemtype2;

typedef struct Node1 {
elemtype1 elem;
link1 next1;
link2 next2;
}
node1;

typedef struct Node2 {
elemtype2 elem;
link1 next1;
link2 next2;
}
node2;

typedef link1 list1;
typedef link2 list2;

list1 create (char *s)
{
link1 cur1;
list1 res1;
link2 cur2;
list2 res2;
int i,n,b;
if ( *s == '\0' ) return NULL;
res1 = cur1 = ( link1 ) malloc ( sizeof (node1));
cur1->elem = *s++;
cur1->next2=NULL;
while ( *s != '\0' ) {
cur1 = cur1->next1 = (list1) malloc( sizeof (node1));
cur1->next2=NULL;
cur1->elem = *s++;
}
cur1->next1 = NULL;
printf("n=");
    scanf("%d",&n);
    scanf("%d",&b);
    res2 = cur2 = ( link2 ) malloc ( sizeof (node2));
    cur2->elem = b;
    cur2->next1=NULL;
    cur1->next2 = cur2;
    for (i=1;i<n;i++)
    {
        scanf("%d",&b);
        cur2 = cur2->next2 = ( link2 ) malloc ( sizeof (node2));
        cur2->next1=NULL;
        cur2->elem = b;
    }
    cur2->next2 = NULL;
    cur2->next1 = res1;
return res1;
}
void print(list1 p)
{ int k,n;
    list2 p2;
    k=1;
    n=0;
    while (p->next1!=NULL)
    {  printf("\n%d. ",k);
       printf ("%c", p->elem );
       p=p->next1;
    k++;
    }

    printf("\n%d. ",k);
    printf("%c",p->elem);
    p2=p->next2;
    while (p2!=NULL)
    {   k++;
        printf("\n%d. ",k);
        printf ("%d", p2->elem );
        p2=p2->next2;
    }
}
void main()
{
    int z;
     list1 l;

     char s[80];
     gets(s);
     l=create(s);
     print(l);
     printf("\nvvod nomera ");
     scanf("%d",&z);
}
P.S. Список состоит из букв и цифр(неоднородный) буквы взяты из строки.
Salatiq вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический список на языке С Вареник Помощь студентам 1 04.03.2012 19:58
Однонаправленный неоднородный (гетерогенный) список с однородными подсписками. Chudo4258 Помощь студентам 22 08.03.2009 19:11
Дан файл, содержащий текст на русском языке.Составить в алфавитном порядке список слов в файл. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 12:05
Программа на русском языке в Windows XP на другом языке... Как? 29bit Свободное общение 4 01.02.2008 17:24