#include<iostream>
struct doubleNode {
int elem;
struct doubleNode* prior;
struct doubleNode* next;
};
struct doubleNode* createLinkedList() {
struct doubleNode* p;
p = new doubleNode;
p->prior = nullptr;
p->next = nullptr;
return p;
}
bool isEmpty(struct doubleNode* head) {
return head->next == nullptr;
}
void insertNodeByHead(struct doubleNode* head, int x) {
struct doubleNode* temp;
temp = new doubleNode;
if (!temp) {
return;
}
temp->elem = x;
temp->next = head->next;
head->next->prior = temp;
head->next = temp;
temp->prior = head;
}
void insertNodeByTail(struct doubleNode* head, int x) {
struct doubleNode* temp;
temp = new doubleNode;
if (!temp) {
return;
}
while (head->next != nullptr) {
head->next = head->next->next;
}
temp->elem = x;
temp->next = nullptr;
temp->prior = head;
head->next = temp;
}
void printLinkedList(struct doubleNode* head) {
struct doubleNode* p = head->next;
while (p != nullptr) {
std::cout << p->elem;
p = p->next;
}
return;
}
void deleteNode(struct doubleNode* head, int x) {
struct doubleNode* p = head->next;
while (p != nullptr) {
if (p->elem == x) {
head->next = p->next;
p->next->prior = head;
free(p);
break;
}
else {
head = p;
p = p->next;
}
}
}
void findLinkedList(struct doubleNode* head, int x) {
struct doubleNode* p = head->next;
for (p; p != nullptr; p = p->next) {
if (p->elem = x) {
std::cout << p->elem;
}
}
}
void reviseLinkedList(struct doubleNode* head, int x) {
struct doubleNode* p = head->next;
while (p->next != nullptr && p->elem != x) {
p = p->next;
}
p->elem = x;
}
int main() {
return 0;
}
数据结构与算法-双向链表
于 2022-07-10 17:33:33 首次发布