#include<iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
class LinkList
{
public:
LinkList(int a[], int n);
void printlist();
void del(int x);
Node *p;
private:
Node * first;
};
LinkList::LinkList(int a[], int n)//数组a有n个数字
{
Node *s;
Node *z = NULL;
first = NULL;
for (int i = n-1; i >= 0; i--)//最后一次循环i=0,先i--得-1,此时i<0,终止循环
{
s = new Node;
s->data = a[i];
s->next = first;
first = s;
if (s->next == NULL)
z = s;
}
z->next = first;
}
void LinkList::printlist()
{
Node *p;
p = first;
while (p ->next != first)
{
cout << p->data << "-> ";
p = p->next;
}
cout << p->data<<endl;
}
void LinkList::del(int x)//输入需要删除的数字
{
Node *a;
Node *b;
//if(x==first->data)
//first = first->next;
a = first; b = first;
while (a->next->data != x)
{
b = a;
a = a->next;
}
b->next = a->next;
free(a);
}
int main()
{
int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
LinkList obj(a, 10);
cout <<endl<< "原循环链表:"; obj.printlist();
cout << endl;
cout << "要删除数字几的前驱结点? ";
int place;
cout << "数字"; cin >> place;
obj.del(place);
cout << endl << "新循环链表:"; obj.printlist(); cout << endl;
system("pause");
return 0;
}
删除循环链表中指针s指向的前趋结点
最新推荐文章于 2022-12-05 12:47:52 发布