关于C语言单向链表,编写一个主函数,要求用函数实现如下功能: 50
(1)随机产生或键盘输入一组元素序列,建立一个带头结点的单向链表(无序);(2)遍历单向链表(即显示顺序表);(3)把单向链表中元素逆置(不允许申请新的结点空间);(4)...
(1) 随机产生或键盘输入一组元素序列,建立一个带头结点的单向链表(无序);
(2) 遍历单向链表(即显示顺序表);
(3) 把单向链表中元素逆置(不允许申请新的结点空间);
(4) 在单向链表中删除所有的偶数元素结点; 展开
(2) 遍历单向链表(即显示顺序表);
(3) 把单向链表中元素逆置(不允许申请新的结点空间);
(4) 在单向链表中删除所有的偶数元素结点; 展开
1个回答
展开全部
#include<iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int _data) {
data = _data;
next = NULL;
}
};
class LinkList {
private:
Node* head;
public:
LinkList() {
head = NULL;
}
void insert(Node *node, int index) {
if (head == NULL) {
head = node;
return;
}
if (index == 0) {
node->next = head;
head = node;
return;
}
Node *current_node = head;
int count = 0;
while (current_node->next != NULL && count < index - 1) {
current_node = current_node->next;
count++;
}
if (count == index - 1) {
node->next = current_node->next;
current_node->next = node;
}
}
void output() {
if (head == NULL) {
return;
}
Node *current_node = head;
while (current_node != NULL) {
cout << current_node->data << " ";
current_node = current_node->next;
}
cout << endl;
}
void delete_node(int index) {
if (head == NULL) {
return;
}
Node *current_node = head;
int count = 0;
if (index == 0) {
head = head->next;
delete current_node;
return;
}
while (current_node->next != NULL && count < index -1) {
current_node = current_node->next;
count++;
}
if (count == index - 1 && current_node->next != NULL) {
Node *delete_node = current_node->next;
current_node->next = delete_node->next;
delete delete_node;
}
}
void reverse(){
if(head == NULL){
return;
}
Node *next_node,*current_node;
current_node = head->next;
head->next = NULL;
while(current_node != NULL){
next_node = current_node->next;
current_node->next = head;
head = current_node;
current_node = next_node;
}
}
};
int main() {
LinkList linklist;
for (int i = 1; i <= 10; i++) {
Node *node = new Node(i);
linklist.insert(node, i - 1);
}
linklist.output();
linklist.delete_node(3);
linklist.output();
linklist.reverse();
linklist.output();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询