gpt4 book ai didi

c++ - 在列表末尾插入一个整数并在第 n 个位置删除

转载 作者:行者123 更新时间:2023-11-30 02:37:37 26 4
gpt4 key购买 nike

所以,在我的链表程序中,我想要它做的是询问用户要输入多少个数字,然后输入数字,并将这些数字添加到列表的末尾。然后,它将打印列表。之后,用户在列表中选择要删除的元素位置,然后重新打印列表。

#include <iostream>
using namespace std;

struct Node{

int data;
Node* link;
};

Node* head;

void Insert(int data){ //insert an integer at the end of the list

Node* temp = new Node();
Node* temp2 = new Node();

temp->data = data;
temp->link = NULL;
if(head = NULL){
head = temp;
return;
}
temp2 = head;
while(temp2->link != NULL){
temp2 = temp2->link;
}

temp2->link = temp;

}

void Delete(int n){ //delete an integer at nth position

Node* temp1 = new Node();
temp1 = head;
if(n == 1){ //if the first node is to be deleted
head = temp1->link; //now head points to second node
delete temp1; //delete first node
return;
}

for(int i = 0; i < n-2; i++){
temp1 = temp1->link; //temp1 points to (n-1)th node
}
Node* temp2 = temp1->link; //temp2 points to nth node
temp1->link = temp2->link; // pointing to (n+1)th node
delete temp2; //deleting nth node

}

void Print(){ //print out the list
Node* printNode = head;
cout << "List: ";

while(printNode != NULL){
cout << printNode->data;
cout << " ";
printNode = printNode->link;
}

cout << "\n";
}

int main(){

int x, count, n;

head = NULL; //start with an empty list

cout << "How many numbers? " << endl;
cin >> count;

for(int i = 0; i < count; i++){

cout << "Enter number: ";
cin >> x;
Insert(x);
}

Print();

cout << "Enter position to delete: ";
cin >> n;

Delete(n);
Print();

return 0;

}

接受第一个数字后,程序停止工作。我能知道我在哪里做错了代码吗?我该怎么做才能使这段代码更有效率?提前致谢。

最佳答案

我的脸很严重,只是一个小错误。代码已更正。

if(head == NULL){
head = temp;
return;
}

关于c++ - 在列表末尾插入一个整数并在第 n 个位置删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com