#include <iostream>
using namespace std;
typedef struct node
{
char data;
struct node *next;
}linklist;
int main()
{
linklist *creat();
void Delete(linklist *start, linklist *s);
linklist *pointer1, *pointer2,*pointer3,*pointer4;
pointer1 = creat();
pointer2 = NULL;
pointer4 = pointer1;
pointer3 = pointer4->next->next->next; //表示会删除开始节点后三个节点的前一个节点,也就是第三个节点
while (pointer1!=pointer2)
{
pointer2 = pointer4;
cout << pointer1->data << " ";
pointer1 = pointer1->next;
}
cout << endl;
pointer1 = pointer4;
pointer2 = NULL;
Delete(pointer1, pointer3);
while (pointer1 != pointer2)
{
pointer2 = pointer4;
cout << pointer1->data << " ";
pointer1 = pointer1->next;
}
return 0;
}
linklist *creat() //建立不带头结点的单链表
{
linklist *p, *r,*s;
char ch1,ch2;
p = new linklist;
s = p;
cin >> ch1;
p->data = ch1;
while ((ch2 = cin.get()) != '\n')
{
r = new linklist;
r->data = ch2;
p->next = r;
p = r;
}
p->next=s;
return s;
}
void Delete(linklist *start, linklist *s) //删除s节点的前一个节点
{
linklist *p,*q;
p = start;
q = start;
while (p->next->next!=s)
{
p = p->next;
}
while (q->next != s)
{
q = q->next;
}
p->next = q->next;
delete q;
}
假设在长度大于1的循环链表中,既无头结点又无头指针,s为指向链表中某个节点的指针,编写算法节点s的前驱节点
最新推荐文章于 2022-09-23 17:21:11 发布