在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/15 20:12:55
在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点
只限明天下午之前!
只限明天下午之前!
![在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点](/uploads/image/z/1027181-29-1.jpg?t=%E5%9C%A8%E9%95%BF%E5%BA%A6%E5%A4%A7%E4%BA%8E1%E7%9A%84%E5%BE%AA%E7%8E%AF%E5%88%97%E8%A1%A8%E4%B8%AD%2C%E6%97%A2%E6%97%A0%E5%A4%B4%E7%BB%93%E7%82%B9%E4%B9%9F%E6%97%A0%E6%A0%B9%E7%BB%93%E7%82%B9%2CS%E7%BB%B4%E6%8C%87%E5%90%91%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%9F%90%E4%B8%AA%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88%2C%E5%88%A0%E9%99%A4%E8%BF%99%E4%B8%AAS%E7%BB%93%E7%82%B9%E7%9A%84%E5%89%8D%E7%BB%AD%E7%BB%93%E7%82%B9)
#include
#include
#include
#include
struct m
{
int data;
struct m *next;
};
typedef struct m LB;
LB *creat(void);
void out(LB *);
void del(LB *);
void main()
{
LB *head=NULL;
if((head=creat())==NULL)
{
printf("链表建立失败~!\n");
exit(0);
}
del(head);
}
LB *creat(void)
{
LB *head=NULL,*p,*s;
char c[5];
int i=1,x;
system("CLS");
s=(LB *)malloc(sizeof(LB));
printf("请输入数据:");
gets(c);
s->data=atoi(c);
while(i)
{
if(head==NULL) head=s;
else p->next=s;
p=s;
printf("请输入数据(ok结束,输入后按回车继续输入):");
gets(c);
if(strcmp(c,"ok")==0) break;
s=(LB *)malloc(sizeof(LB));
s->data=atoi(c);
}
p->next=head;
return head;
}
void out(LB *head)
{
LB *p=head;
do
{
printf("%6d",p->data);
p=p->next;
}while(head-p);
printf("\n");
}
void del(LB *head)
{
LB *s,*p,*q; //p为s的前续,q为p的前续
int x,find=0;
printf("原数据:\n");
out(head);
printf("输入s所指的数据:");
scanf("%d",&x);
q=head;
p=q->next;
s=p->next;
do
{
if(s->data==x)
{
find=1;
break;
}
q=p;
p=s;
s=s->next;
}while(q!=head);
if(find==0)
{
printf("数据没找到!");
return;
}
printf("删除s前续数据前各结点数据:\n");
out(head);
if(p==head)
head=s;
q->next=p->next;
free(p);
printf("删除s前续数据后各结点数据:\n");
out(head);
}
#include
#include
#include
struct m
{
int data;
struct m *next;
};
typedef struct m LB;
LB *creat(void);
void out(LB *);
void del(LB *);
void main()
{
LB *head=NULL;
if((head=creat())==NULL)
{
printf("链表建立失败~!\n");
exit(0);
}
del(head);
}
LB *creat(void)
{
LB *head=NULL,*p,*s;
char c[5];
int i=1,x;
system("CLS");
s=(LB *)malloc(sizeof(LB));
printf("请输入数据:");
gets(c);
s->data=atoi(c);
while(i)
{
if(head==NULL) head=s;
else p->next=s;
p=s;
printf("请输入数据(ok结束,输入后按回车继续输入):");
gets(c);
if(strcmp(c,"ok")==0) break;
s=(LB *)malloc(sizeof(LB));
s->data=atoi(c);
}
p->next=head;
return head;
}
void out(LB *head)
{
LB *p=head;
do
{
printf("%6d",p->data);
p=p->next;
}while(head-p);
printf("\n");
}
void del(LB *head)
{
LB *s,*p,*q; //p为s的前续,q为p的前续
int x,find=0;
printf("原数据:\n");
out(head);
printf("输入s所指的数据:");
scanf("%d",&x);
q=head;
p=q->next;
s=p->next;
do
{
if(s->data==x)
{
find=1;
break;
}
q=p;
p=s;
s=s->next;
}while(q!=head);
if(find==0)
{
printf("数据没找到!");
return;
}
printf("删除s前续数据前各结点数据:\n");
out(head);
if(p==head)
head=s;
q->next=p->next;
free(p);
printf("删除s前续数据后各结点数据:\n");
out(head);
}
在长度大于1的循环列表中,既无头结点也无根结点,S维指向列表中的某个节点指针,删除这个S结点的前续结点
有一个循环单链表的长度大于1,表中既无头结点也无头指针.S为指向链表中某结点的指针,写算法,删除结点S
已知在长度大于1的循环单链表中,s指向某一个结点,试编写算法删除s的直接前驱结点.急用
假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针.已知s为指向链表中第s个元素,试编写算法
数据结构已知指针P指向双向链表中的一个结点(非首结点、非尾结点),则:(1)将结点S插入在P结点的直接
P是指向双向链表中某个结点的指针,写出删除P指向结点的前驱结点的语句序列
一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点.
设指针p指向单链表中结点A,指针s指向被插入的结点X,则在结点A前面插入结点X是的操作序列为:
在循环双向链表中表头结点的左指针域指向()结点,最后一个结点的右...
已知带表头结点的单链表L,指针P指向L链表中的一个结点(非首、尾结点):删除P结点的语句序列是?
4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为________
在一个单链表中,若p所指结点不是最后结点,s指向已生成新结点,则在p之后插入s所指结点的正确操作是?