Critical Fist Ответов: 1

Как заставить пользователя ввести связанный список в следующем коде?


#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct node{
int data;
struct node* next;
};
struct node* head;
void insert(int data,int n)
{
 node* temp1=new node();
 temp1->data= data;
 temp1->next=NULL;
 if (n==1){
    temp1->next=head;
    head=temp1;
    return;
 }
 node* temp2=head;
 for(int i=0;i<n-2;i++){
    temp2=temp2->next;
}
temp1->next=temp2->next;
temp2->next= temp1;
};
void print(){
node* temp=head;
while(temp!= NULL){
    cout<<temp->data<<"\n";
    temp=temp->next;
}
}
int main()
{
 head=NULL;
 insert(2,1);
 insert(7,2);
 insert(8,3);
 insert(6,4);
 insert(0,4);
 insert(3,4);
 print();
}


Что я уже пробовал:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
struct node{
int data;
struct node* next;
};
struct node* head;
void insert(int data,int n)
{
 node* temp1=new node();
 temp1->data= data;
 temp1->next=NULL;
 if (n==1){
    temp1->next=head;
    head=temp1;
    return;
 }
 node* temp2=head;
 for(int i=0;i<n-2;i++){
    temp2=temp2->next;
}
temp1->next=temp2->next;
temp2->next= temp1;
};
void print(){
node* temp=head;
while(temp!= NULL){
    cout<<temp->data<<"\n";
    temp=temp->next;
}
}
int main()
{
 head=NULL;
 insert(2,1);
 insert(7,2);
 insert(8,3);
 insert(6,4);
 insert(0,4);
 insert(3,4);
 print();
}

CHill60

Ваш вопрос не совсем ясен. Как пользователь может ввести связанный список во что-либо? Пожалуйста, перефразируйте свой вопрос и приведите его в порядок так, чтобы код был представлен только один раз.
Кроме того - попробуйте провести некоторые исследования - Гугл[^]

Critical Fist

я хочу, чтобы пользователь вводил связанный список, а не вставлял его вручную

1 Ответов

Рейтинг:
0

OriginalGriff

Замените этот код:

insert(2,1);
insert(7,2);
insert(8,3);
insert(6,4);
insert(0,4);
insert(3,4);
С помощью цикла, который считывает данные и вставляет позицию от пользователя с помощью cin и чем называет insert передача этих значений.
Подсказка: Ваш insert функция должна будет выполнить некоторую проверку границ.

Но это ваша домашняя работа, а не наша - так что написание кода-ваша задача!


Critical Fist

я сделал этот код и его работу, но я хотел бы знать, если это эффективно.
количество=2;
делать
{
cout<<"введите номер или введите -1, Если вы хотите выйти";
cin>>n;
если (n!=-1)
{
вставить(n,количество);
};
считать++;
}а(п!=-1);
граф 2 потому что я также дал предмет Мануэля в первом слоте

OriginalGriff

Я бы предложил, чтобы вместо того, чтобы все время вызывать "insert" с номером, вы написали метод "add", который пересекает список и добавляет его в конец, а затем вызываете его вместо этого. Это делает вызывающий код намного "чище" - я бы также предоставил функцию "AddToFront", которая эффективно выполняет "вставку" в голове.

Critical Fist

хорошо спасибо

OriginalGriff

Всегда пожалуйста!