数据结构把我整不会了,有没有朋友帮我看看这段代码的问题,感激不尽!
题目:有一个整数单链表L,设计一个算法删除其中所有值为x节点,并给出算法的时间和空间复杂度。例如L=(1,2,2,3,1),x=2,删除后L=(1,3,1)。
//问:有一个整数单链表L,设计一个算法删除其中所有值为x节点,并给出算法的时间和空间复杂度。例如L=(1,2,2,3,1),x=2,删除后L=(1,3,1)。
//答:
#include<iostream>
using namespace std;
struct LinkedList
{
int data;
LinkedList* next;
};
void CreateList(LinkedList*& L, LinkedList*& head)
{
LinkedList* tmp;
L = new LinkedList();
head = L;
L->data = 1;
tmp = new LinkedList();
L->next = tmp;
L = L->next;
L->data = 2;
tmp = new LinkedList();
L->next = tmp;
L = L->next;
L->data = 2;
tmp = new LinkedList();
L->next = tmp;
L = L->next;
L->data = 3;
tmp = new LinkedList();
L->next = tmp;
L = L->next;
L->data = 1;
tmp = new LinkedList();
L->next = tmp;
L = L->next;
L->next = nullptr;
delete tmp;
}
void Delete(LinkedList*& head, int del)
{
LinkedList* prev = head;
LinkedList* tmp;
LinkedList* curr = prev->next;
if (prev->data == del)
{
tmp = prev;
prev = prev->next;
head = prev;
delete tmp;
}
while (curr->next != nullptr)
{
if (curr->data == del)
{
tmp = curr;
prev->next = tmp->next;
curr = curr->next;
delete tmp;
}
else
{
prev = prev->next;
curr = prev->next;
}
}
}
void PrintList(LinkedList* head)
{
LinkedList* L = head;
while (L->next != nullptr)
{
cout << L->data << " ";
L = L->next;
}
cout << endl;
}
int main()
{
int del = 2;
LinkedList* L;
LinkedList* head;
CreateList(L,head);
cout << "初始链表:";
PrintList(head);
Delete(head,del);
cout << "删除元素"<<del<<"后的链表:";
PrintList(head);
delete head;
return 0;
}
运行结果是这样的:
真的整不会了