数据结构-链表习题(C++)
2023-12-13 15:30:46
程序设计题: 单链表实验
1.从键盘输入若干大于0的整数,用这些整数构造一个单链表.当用户输入小于等于0的值时创建链表结束并在终端打印输出这个链表。
2.在链表中查找某结点,如果能找到输出这个结点是第几个结点,如果找不到,输出:找不到此结点。
3.删除指定结点: 如果指定的被删除结点存在就删除它,然后打印:已经删除,如果不存在,输出信息: 链表中没有此结点,无法删除。
4.删除重复结点:如果链表中有重复的元素,删除重复的元素,使得所有值最多只出现一次,例如,如果链表中有3个结点的值是100,那么需要删除两个值为100的结点。只保留一个值为100的结点。删除重复结点后打印输出整个链表
C++:
1------------------------------------------------------
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
};
Node* createLinkedList() {
Node* head = nullptr;
Node* tail = nullptr;
int input;
while (true) {
cin >> input;
if (input <= 0) {
break;
}
Node* newNode = new Node;
newNode->data = input;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
return head;
}
void printLinkedList(Node* head) {
Node* current = head;
while (current != nullptr) {
cout << current->data << " ";
current = current->next;
}
}
int main() {
Node* head = createLinkedList();
printLinkedList(head);
return 0;
}
2------------------------------------------------------
int findNodePosition(Node* head, int value) {
Node* current = head;
int position = 1;
while (current != nullptr) {
if (current->data == value) {
return position;
}
current = current->next;
position++;
}
return -1; // Node not found
}
int main() {
Node* head = createLinkedList();
int valueToFind;
cin >> valueToFind;
int position = findNodePosition(head, valueToFind);
if (position != -1) {
cout << "The node is at position: " << position << endl;
} else {
cout << "Node not found" << endl;
}
return 0;
}
3------------------------------------------------------
int findNodePosition(Node* head, int value) {
Node* current = head;
int position = 1;
while (current != nullptr) {
if (current->data == value) {
return position;
}
current = current->next;
position++;
}
return -1; // Node not found
}
int main() {
Node* head = createLinkedList();
int valueToFind;
cin >> valueToFind;
int position = findNodePosition(head, valueToFind);
if (position != -1) {
cout << "The node is at position: " << position << endl;
} else {
cout << "Node not found" << endl;
}
return 0;
}
4------------------------------------------------------
Node* removeDuplicates(Node* head) {
Node* current = head;
while (current != nullptr) {
Node* runner = current;
while (runner->next != nullptr) {
if (runner->next->data == current->data) {
Node* temp = runner->next;
runner->next = runner->next->next;
delete temp;
} else {
runner = runner->next;
}
}
current = current->next;
}
return head;
}
int main() {
Node* head = createLinkedList();
head = removeDuplicates(head);
printLinkedList(head);
return 0;
}
C:
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* createLinkedList() {
struct Node* head = NULL;
struct Node* tail = NULL;
int input;
while (1) {
scanf("%d", &input);
if (input <= 0) {
break;
}
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = input;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
return head;
}
void printLinkedList(struct Node* head) {
struct Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
}
int findNodePosition(struct Node* head, int value) {
struct Node* current = head;
int position = 1;
while (current != NULL) {
if (current->data == value) {
return position;
}
current = current->next;
position++;
}
return -1; // Node not found
}
struct Node* removeDuplicates(struct Node* head) {
struct Node* current = head;
while (current != NULL) {
struct Node* runner = current;
while (runner->next != NULL) {
if (runner->next->data == current->data) {
struct Node* temp = runner->next;
runner->next = runner->next->next;
free(temp);
} else {
runner = runner->next;
}
}
current = current->next;
}
return head;
}
int main() {
struct Node* head = createLinkedList();
printLinkedList(head);
int valueToFind;
scanf("%d", &valueToFind);
int position = findNodePosition(head, valueToFind);
if (position != -1) {
printf("The node is at position: %d\n", position);
} else {
printf("Node not found\n");
}
head = removeDuplicates(head);
printLinkedList(head);
return 0;
}
?
文章来源:https://blog.csdn.net/wlq_567/article/details/134907135
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!