Форум программистов, компьютерный форум CyberForum.ru

Объединение (конкатенация) двух односвязных списков - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как перенести все отрицательные элементы из одного массива в другой. http://www.cyberforum.ru/cpp-beginners/thread367495.html
Здравствуйте, уважаемые форумчане. Большая просьба помочь: Как из одномерного массива целых чисел все отрицательные элементы перенести в новый массив ?
C++ Разработать алгоритм решения задачи обработки одномерного массива. Помогите пожалуйста с написанием кода: Лабораторная работа № 4 Разработать алгоритм решения задачи обработки одномерного массива. Реализовать алгоритм на языке С++ двумя способами: 1) с помощью цикла с параметром for; 2) с помощью цикла с предусловием while или с постусловием do while. Предусмотреть ввод данных массива с клавиатуры и вывод результатов на экран.... http://www.cyberforum.ru/cpp-beginners/thread367493.html
C++ друзья помогите пожалуйста с задачками))
Перенесено из раздела CyberBlogger.ru Друзья, помогите пожалуйста с задачками )) в одномерном массиве, состоящем из n вещественных элементов вычислить: а)сумму элементов массива с нечетными номерами; б)сумму элементов массива, расположенных между первым и последним отрицательными элементами; в)сжать массив, удалив из нее все элементы, модуль которых не превышает 1. Освободившиеся в конце...
C++ Как найти сумму в массиве
дан массив А(50).найти сумму и кол-во нечетных положительных элементов,следующих за первым по порядку нулевым элементом.
C++ шашки C++ http://www.cyberforum.ru/cpp-beginners/thread367477.html
О великие гуру,я взываю вашей помощи. Хочу написать шашки на C++,но пока не особо представляю,что к чему. А именно: как сделать искусственный интеллект? как сделать выбор определенной шашки и как комп будет определять более удачный ход? у меня есть пара набросков,но они касаемы самого поля(массив 8*8,в котором 0 - пустые клетки,1 - белые шашки,2 - черные) и хода шашек( для белых это: board и...
C++ Форматирование поток ввода\вывода Здравствуйте, прощу объяснить и помочь дописать небольшой кусочек программы. 3адание: Определить структуру, елементами которой есть данные про студента (фамилия, стедний бал, стипендия). Ввести данные с клавиатуры, записать в текстовый и бинарный файл.Во время запись в текстовый файл отформатировать данные с помощью параметризованных манипуляторов (точность, ширина поля, заполнители), простих... подробнее

Показать сообщение отдельно
itnomad
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 3
03.11.2011, 17:59     Объединение (конкатенация) двух односвязных списков
у меня похожая задача, но на Си: напишите программу, выполняющую конкатенацию двух связанных списков символов. программа должна включать функцию concatenate, которой в качестве аргументов передаются указатели на оба списка и она присоединяет второй список к первому.

Вот что я написал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
struct listNode{
    char data;
    listNode *nextPtr;
};
 
typedef struct listNode LISTNODE;
typedef LISTNODE *LISTNODEPTR;
 
//funktsia obiedinenia spiskov
void concatenate(LISTNODEPTR , LISTNODEPTR );
//funktsia pechati spiska
void printList(LISTNODEPTR);
//funktsia vvoda bukv v spisok
void insert(LISTNODEPTR *, char);
 
void main(){
    clrscr();
    char item;
    LISTNODEPTR startPtr=NULL;
    LISTNODEPTR startPtr2=NULL;
    //vvodim 3 bukvi v pervii spisok
    for(int i=0;i<3;i++){
       printf("Enter a character list1: \n");
       scanf("%s", &item);
       insert(&startPtr, item);
       printList(startPtr);
    }
       //vvodim 3 bukvi vo vtoroi spisok
    for(i=0;i<3;i++){
       printf("Enter a character list2: \n");
       scanf("%s", &item);
       insert(&startPtr2, item);
       printList(startPtr2);
    }
    //obiedinenie
    concatenate(startPtr,startPtr2);
    printf("\nConcatenate list(1+2): \n");
    printList(startPtr);
    getch();
}
 
//funktia vvoda bukv v spisok
void insert(LISTNODEPTR *sPtr, char value){
    LISTNODEPTR newPtr, prevPtr, curPtr;
    newPtr=(LISTNODEPTR)malloc(sizeof(LISTNODE));
    if(newPtr!=NULL){
       newPtr->data=value;
       newPtr->nextPtr=NULL;
       prevPtr=NULL;
       curPtr=*sPtr;
       while(curPtr!=NULL&&value>curPtr->data){
          prevPtr=curPtr;
          curPtr=curPtr->nextPtr;
       }
       if(prevPtr==NULL){
          newPtr->nextPtr=*sPtr;
          *sPtr=newPtr;
       }
       else{
          prevPtr->nextPtr=newPtr;
          newPtr->nextPtr=curPtr;
       }
    }
    else
       printf("%c  not inserted. No memory avaible\n", value);
}
 
//funktia raspechatki spiska
void printList(LISTNODEPTR curPtr){
    if(curPtr==NULL)
       printf("List is empty\n");
    else{
       printf("The list is: \n");
       while(curPtr!=NULL){
          printf("%c-> ", curPtr->data);
          curPtr=curPtr->nextPtr;
       }
       printf("NULL\n\n");
    }
}
 
//funktia obiedinenia dvuh spiskov
void concatenate(LISTNODEPTR startPtr, LISTNODEPTR startPtr2){
    LISTNODEPTR curPtr;
    curPtr=startPtr;
    while(curPtr!=NULL){
       printf("%c-> ", curPtr->data);
       curPtr=curPtr->nextPtr;
    }
    if(curPtr->nextPtr==NULL) {
       curPtr->nextPtr=startPtr2;
    }
}
вроде правильно, но почему не объединяет - ума не приложу. подскажите пожалуйста, что не так?
 
Текущее время: 04:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru