教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

已知带头结点的动态单链表L中的结点是按整数值递增排序的,编写算(2)

来源:网络收集 时间:2026-04-27
导读: LinkList1 a=A,b=B,c=C; int a1=0,b1=0,c1=0; while ( p ) { if (strcmp( p-data,a)=0 strcmp(p-data,z)=0||strcmp( p-data,A)=0 strcmp(p-data,Z)=0) { a1++; q=p; //保存字母结点位置 p=p-next; a-next=q; q-next

LinkList1 a=A,b=B,c=C;
int a1=0,b1=0,c1=0;
while ( p )
{
if (strcmp( p->data,"a")>=0 &&strcmp(p->data,"z")<=0||strcmp( p->data,"A")>=0 &&strcmp(p->data,"Z")<=0)
{
a1++;
q=p; //保存字母结点位置
p=p->next;
a->next=q;
q->next=A->next;// 形成循环链表
a=a->next;
}
else if(strcmp( p->data,"0")>=0 &&strcmp( p->data,"9")<=0)
{
b1++;
q=p;
p=p->next;
b->next=q;
q->next=B->next;
b=b->next;
}
else
{
c1++;
q=p;
p=p->next;
c->next=q;
q->next=C->next;
c=c->next;
}
}
//a=A->next;b=B->next;c=C->next;
cout<<"分离出含字母的链表部分:"<<endl;
while(a1--)//一开始写成没用a1计数,while(a)当然死循环了,因为它是循环链表啊!
{
cout<<a->data<<" ";
a=a->next;
}
cout<<endl;
cout<<"分离出含数字的链表部分:"<<endl;
while(b1--)
{
cout<<b->data<<" ";
b=b->next;
}
cout<<endl;
cout<<"分离出含除字母与数字外的链表的其他部分:"<<endl;
while(c1--)
{
cout<<c->data<<" ";
c=c->next;
}
cout<<endl;
}
//*********************************双向链表的初始化*********10/6********************************************
Status InitList_D(LinkList1 &L){
L=new LNode1;
L->next=L->prior=NULL;
return 1;
}
//*********************************创建双链表***************10/6~10/7************************************************
void CreateList_D(LinkList1 &L,int &n)
{
LinkList1 p,q;
L = new LNode1;
p = L;
for(int i = 1;i <=n;i++) {
q = new LNode1;
cin >> q->data;
q->freq =1;
q->next=NULL;
p->next = q;
q->prior = p;
p = q;
}


}
//*********************************访问频度排序***********10/6~10/7*********************************************
void LOCATE(LinkList1 &L,ElemType1 x,int n)
{
LinkList1 p=L->next,q=L->next;

while(p)
{
if(strcmp(p->data,x)!=0)
p=p->next;
else
{
p->fr
eq++;
//cout<<p->freq<<endl;
break;
}
}
while(q)
{

if(q->freq > p->freq)
{
q=q->next;
}
else if(p==q)

有两个按元素值递增有序的线性表A和B以单链表作存储结构,试编写算法将A表和B表归并成一个按元素值递减有序的线性表C长度大于1的单循环链表中编写算法删除结点*s的直接前驱结点。单链表线性表中含有三类字符的数据构造三个以循环链表示的线性表,使每一个表中只含同一类的字符有一双链表,每个结点中除有prior、data和next域外,还有一访问频度域freq每当在链表上进行一次LOCATE(L,x)运算,元素值为x的结点中freq域的值增1

break;
else
{
p->prior->next=p->next;//摘下
if(p->next)
p->next->prior=p->prior;
p->prior=q->prior;//插入
q->prior->next=p;
p->next=q;
q->prior=p;
break;
}
}
cout<<"按访问频度由大到小排序后链表中元素顺序为"<<endl;
p=L->next;
for( int i=1;i<=n;i++)
{
cout<<p->data<<" ";
p=p->next;
}
}
//********************************菜单****9/30*********************************************************
void caidan()
{
printf("\n请选择菜单:\n");
printf("\t\t\t1 创建链表\n");
printf("\t\t\t2 插入元素(在1创建的链表中插入)\n");
printf("\t\t\t3 逆置链表\n");
printf("\t\t\t4 合并链表\n");
printf("\t\t\t5 删除前驱结点\n");
printf("\t\t\t6 分离链表中相同属性元素\n");
printf("\t\t\t7 访问频度排序\n");
printf("\t\t\t0 退出系统\n");
}
//*********************************主函数***********************************************************

int main()
{
LinkList head=NULL;
LinkList head1=NULL;
LinkList head2=NULL;
LinkList1 head3=NULL;
LinkList1 A=NULL,B=NULL,C=NULL;
int n,m,k;
ElemType e;
ElemType1 x;
caidan();
do{
scanf("%d",&m);
switch(m)
{
case 1:
system("cls");
cout<<"请输入链表中元素个数:"<<endl;
cin>>n;
InitList_L(head);
cout<<"请按递减顺序依次输入元素:"<<endl;
CreateList_L(head, n);

break;
case 2:
system("cls");
cout<<"请输入您要插入的元素:"<<endl;
cin>>e;
ListIsert_L(head,n,e); break;
case 3:
system("cls");
cout<<"逆置后链表中元素为:"<<endl;
nizhi(head,n); break;
case 4:
system("cls");
cout<<"请输入a链表中元素个数:"<<endl;
cin>>n;
InitList_L(head1);
cout<<"请按递减顺序依次输入元素:"<<endl;
CreateList_L(head1, n);
//system("cls");
cout<<"请输入b链表中元素个数:"<<endl;
cin>>n;
InitList_L(head2);
cout<<"请按递减顺序依次输入元素:"<<endl;
CreateList_L(head2, n);
cout<<"合并后链表中按递减顺序存储的元素为:"<<endl;
MergeList_L(head1,head2,head);
break;
case 5:
system("cls");
deletes();
break;
case 6:
system("cls");
InitList_L1(head3);
InitList_L …… 此处隐藏:2191字,全部文档内容请下载后查看。喜欢就下载吧 ……

已知带头结点的动态单链表L中的结点是按整数值递增排序的,编写算(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/50768.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)