资源描述:
《2010青海省数据库入门入门.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、编程实现单链表的就地逆置。23.在数组A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.2、二路插入排序是将待排关键字序列r[1..n]中关键字分二路分别按序插入到辅助向量d[1..n]前半部和后半部(注:向量d可视为循环表),其原则为,先将r[l]赋给d[1],再从r[2]记录开始分二路插入。编写实现二路插入排序算法。3、有一个带头结点的单链表,每个结点包括两个域,一个是整型域info,另一个是指向下一个结点的指针
2、域next。假设单链表已建立,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留一个。#includetypedefchardatatype;typedefstructnode{datatypedata;structnode*next;}listnode;typedeflistnode*linklist;/*--------------------------------------------*//*删除单链表中重复的结点*//*-------------
3、-------------------------------*/linklistdeletelist(linklisthead){listnode*p,*s,*q;p=head->next;while(p){s=p;q=p->next;while(q)if(q->data==p->data){s->next=q->next;free(q);q=s->next;}else{s=q;/*找与P结点值相同的结点*/q=q->next;}p=p->next;}returnhead;}4、编写一个过程,
4、对一个n×n矩阵,通过行变换,使其每行元素的平均值按递增顺序排列。5、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。现要求采用循环链表结构设计一个算法,模拟此过程。#includetypedefintdatatype;typedefstructnode{datatypedata;
5、structnode*next;}listnode;typedeflistnode*linklist;voidjose(linklisthead,ints,intm){linklistk1,pre,p;intcount=1;pre=NULL;k1=head;/*k1为报数的起点*/while(count!=s)/*找初始报数起点*/{pre=k1;k1=k1->next;count++;}while(k1->next!=k1)/*当循环链表中的结点个数大于1时*/{p=k1;/*从k1开始报数*
6、/count=1;while(count!=m)/*连续数m个结点*/{pre=p;p=p->next;count++;}pre->next=p->next;/*输出该结点,并删除该结点*/printf("%4d",p->data);free(p);k1=pre->next;/*新的报数起点*/}printf("%4d",k1->data);/*输出最后一个结点*/free(k1);}main(){linklisthead,p,r;intn,s,m,i;printf("n=");scanf("%
7、d",&n);printf("s=");scanf("%d",&s);printf("m=",&m);scanf("%d",&m);if(n<1)printf("n<0");else{/*建表*/head=(linklist)malloc(sizeof(listnode));/*建第一个结点*/head->data=n;r=head;for(i=n-1;i>0;i--)/*建立剩余n-1个结点*/{p=(linklist)malloc(sizeof(listnode));p->data=i;p-
8、>next=head;head=p;}r->next=head;/*生成循环链表*/jose(head,s,m);/*调用函数*/}}6、数组A和B的元素分别有序,欲将两数组合并到C数组,使C仍有序,应将A和B拷贝到C,只要注意A和B数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到C中即可。voidunion(intA[],B[],C[],m,n)//整型数组A和B各有m和n个元素,前者递增有序,后者递减有序,本算法将A和B归并为递增有序的数组C。{i=0;j=n-1;k=0