c++书写程序1要求编程实现整数链表类用类模板实现通用的链表类实现以下功能。创建n个元素的整数链表功能菜单: 1创建链表。2插入结点 3删除节点4链表遍历输出5查询结点
以下是一个可能的实现:
#include
template
Node(T value){
data = value;
next = nullptr;
}
};
template
public: LinkedList(){ head = nullptr; size = 0; }
void insertNode(T value){
Node<T>* newNode = new Node<T>(value);
if(head == nullptr){
head = newNode;
}
else{
Node<T>* current = head;
while(current->next != nullptr){
current = current->next;
}
current->next = newNode;
}
size++;
}
void deleteNode(T value){
if(head == nullptr){
cout<<"链表为空,无法删除节点!"<<endl;
return;
}
if(head->data == value){
Node<T>* temp = head;
head = head->next;
delete temp;
size--;
return;
}
Node<T>* current = head;
while(current->next != nullptr && current->next->data != value){
current = current->next;
}
if(current->next == nullptr){
cout<<"未找到该节点!"<<endl;
return;
}
Node<T>* temp = current->next;
current->next = current->next->next;
delete temp;
size--;
}
void traverse(){
if(head == nullptr){
cout<<"链表为空!"<<endl;
return;
}
Node<T>* current = head;
while(current != nullptr){
cout<<current->data<<" ";
current = current->next;
}
cout<<endl;
}
void searchNode(T value){
if(head == nullptr){
cout<<"链表为空!"<<endl;
return;
}
Node<T>* current = head;
int index = 0;
while(current != nullptr){
if(current->data == value){
cout<<"找到该节点,位置为:"<<index<<endl;
return;
}
current = current->next;
index++;
}
cout<<"未找到该节点!"<<endl;
}
};
int main(){
LinkedList
do{
cout<<"功能菜单:"<<endl;
cout<<"(1)创建链表。"<<endl;
cout<<"(2)插入结点。"<<endl;
cout<<"(3)删除节点。"<<endl;
cout<<"(4)链表遍历输出。"<<endl;
cout<<"(5)查询结点。"<<endl;
cout<<"(0)退出程序。"<<endl;
cout<<"请选择功能(0-5):";
cin>>choice;
switch(choice){
case 1:
int n;
cout<<"请输入链表的长度:";
cin>>n;
for(int i=0; i<n; i++){
cout<<"请输入第"<<i+1<<"个元素的值:";
cin>>value;
list.insertNode(value);
}
break;
case 2:
cout<<"请输入要插入的元素的值:";
cin>>value;
list.insertNode(value);
break;
case 3:
cout<<"请输入要删除的元素的值:";
cin>>value;
list.deleteNode(value);
break;
case 4:
list.traverse();
break;
case 5:
cout<<"请输入要查询的元素的值:";
cin>>value;
list.searchNode(value);
break;
case 0:
cout<<"程序已退出!"<<endl;
break;
default:
cout<<"请输入合法的选项!"<<endl;
break;
}
}while(choice != 0);
return 0;
原文地址: https://www.cveoy.top/t/topic/iKX2 著作权归作者所有。请勿转载和采集!