Рассмотрим:Как связать связанный список с статическим массивом на C++?
struct Package_Node
{
int bar_code;
float package_weight;
struct Package_Node *next_packaged;
};
struct Key_Node
{
int key;
struct Package_Node *next_package;
};
int weightTemp = 0, barcodeTemp = 0, keyTemp = 0, N = 0, X = 0, max_value = 0, optionChosen = 0, optionChosenTwo = 0;
float tempWeight;
int main()
{
srand(time(NULL));
do
{
cout << "1 - Enter Number of keys and the Max Value\n2 - Enter Number of Packages (N)\n";
cout << "3 - Create Array of Keys\n4 - Organize Packages\n5 - Table Stats\n6 - Clean Table\n7 - Exit\n\n";
cin >> optionChosen;
switch(optionChosen)
{
case 1:
{
cout << "\nEnter Number of Keys:";
cin >>X;
cout <<"\nEnter Max Value of the Barcode: ";
cin >>max_value;
break;
}
case 2:
{
cout << "\nEnter Number of Packages: ";
cin >> N;
//keyTemp=
break;
}
case 3:
{
Key_Node keyMain[X];
for(int i=0;i<X;i++)
{
keyMain[i].key=i;
//cout << keyMain[i].key; //to see key values.
}
break;
}
case 4:
{
Package_Node totalPackages[N];
for(int i=0;i<N;i++)
{
barcodeTemp = rand() % max_value + 1;
keyTemp = barcodeTemp % X;
tempWeight = rand() % 500 + 1;
totalPackages[i].bar_code=barcodeTemp;
totalPackages[i].package_weight=tempWeight;
}
for(int i=0;i<N;i++)
{
cout << totalPackages[i].bar_code <<endl;
cout << totalPackages[i].package_weight << endl;
}
Это мой код. Я пытаюсь поместить информацию об общих пакетах [i] (динамический массив) и связать ее с keyMain (типа данных Package_Node и статического массива). Но я полностью потерял здесь, как это сделать.
Также является ли мое объявление динамического массива «totalPackages» правильным? Или я не должен объявлять его размер, так как это будет расти в соответствии с общим количеством пакетов, введенных пользователем? totalPackages
предполагается связанный список, который растет по мере того, как программа хочет.
Этот код не подходит для компиляции, а тем более работает корректно (или даже * неправильно). Недопустимые объявления переменных ('totalPackages'), неполные' main() '(и' case', 'switch' и' do-while'). Просьба предоставить [SSCCE] (http://sscce.org), который усиливает ваш вопрос. – WhozCraig
@WhozCraig Я добавил декларацию totalPackages, которая, по-видимому, была удалена во время публикации. Другие части будут обработаны позже, я пытаюсь выяснить, как указать point key_node. Указатель next_package keyMain будет указывать на указатель totalPackages [some number]? – 2013-03-03 19:20:35
Все еще не компилируется, а также, C++ не поддерживает объявления VLA (переменная длина массива). Ваша реализация может это позволить, но она нестандартна. Вы были бы значительно ближе к портативным, используя 'std :: vector'. Даже тогда, если вы предполагаете использовать связанный список, как указано в вопросе, я не вижу, как вы заключили, что статический массив будет приемлемым для любой проблемы. –
WhozCraig