没有合适的资源?快使用搜索试试~ 我知道了~
数据结构上机题.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 173 浏览量
2022-07-11
14:57:55
上传
评论 3
收藏 116KB DOC 举报
温馨提示
试读
25页
数据结构上机题 //1、设有两个有序序列,利用归并排序将它们排成有序表,并输出。 #include"stdio.h" #include"stdlib.h" #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OVERFLOW -2 #define OK 1 typedef struct { int *elem; int length; int listsize; }SqList; int InitList_Sq(SqList &L) {L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L.elem)exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; } void MergeList_Sq(SqList La,SqList Lb,SqList &Lc) {int *pa,*pa_last,*pb,*pb_last,*pc; pa=La.elem; pa_last=La.elem+La.
资源推荐
资源详情
资源评论
数据结构上机题
数据结构上机题
//1、设有两个有序序列,利用归并排序将它们排成有序表,并输出。
#include"stdio.h"
#include"stdlib.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OVERFLOW -2
#define OK 1
typedef struct
{ int *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L)
{L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
void MergeList_Sq(SqList La,SqList Lb,SqList &Lc)
{int *pa,*pa_last,*pb,*pb_last,*pc;
pa=La.elem;
pa_last=La.elem+La.length-1;
pb=Lb.elem;
pb_last=Lb.elem+Lb.length-1;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(int*)malloc(Lc.listsize*sizeof(int));
if(!Lc.elem)exit(OVERFLOW);
while(pa<=pa_last&&pb<=pb_last)
{if(*pa<=*pb)*pc++=*pa++;
else *pc++=*pb++;
}
while(pa<=pa_last)*pc++=*pa++;
while(pb<=pb_last)*pc++=*pb++;
}
int Input(SqList &L)
{ int i,j;
int *pa=L.elem;
printf("要输入的元素个数:");
scanf("%d",&i);
printf("输入有序序列:");
for(j=0;j<i;j++)
数据结构上机题
{ scanf("%d",pa++);
L.length=i;
}
printf("\n");
return OK;
}
int Output(SqList &L)
{ printf("输出序列:");
int i=0;
while(i<L.length)printf("%d ",L.elem[i++]);
printf("\n");
return OK;
}
int main()
{SqList La,Lb,Lc;
InitList_Sq(La);
InitList_Sq(Lb);
InitList_Sq(Lc);
Input(La);
Input(Lb);
MergeList_Sq(La,Lb,Lc);
Output(Lc);
return OK;
}
//2、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果在输出"YSE";否则,
将它插入到序列中使它仍然有序,并输出排序后的序列。
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
typedef struct{
int *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L){
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
数据结构上机题
}
int ListInsert_Sq(SqList &L, int i,int e){
if((i<1)||(i>L.length+1)) return ERROR;
int *q=&(L.elem[i-1]);
for(int *p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int elemfind(SqList &L,int e){
for(int i=0;i<L.length;i++)
{ if(e==L.elem[i]) return 1;
if(i==0&&e<L.elem[i]) {ListInsert_Sq(L,i+1,e);break;}
if(i==L.length-1) {ListInsert_Sq(L,i+2,e);break;}
if(e>L.elem[i]&&e<L.elem[i+1]) {ListInsert_Sq(L,i+2,e);break;}
}
return 0;
}
void main(){
SqList L1;
int a,i,n;
InitList_Sq(L1);
printf("输入序列的元素个数:");
scanf("%d",&n);
printf("请输入%d 个有序元素:",n);
for(i=1;i<=n;i++){
scanf("%d",&a);
ListInsert_Sq(L1,i,a);
}
printf("请输入要操作的元素: ");
scanf("%d",&a);
if(elemfind(L1,a)==1) printf("YES");
else
for(i=0;i<L1.length;i++)
printf("%d ",L1.elem[i]);
printf("\n");
}
//3、设有一有序序列,从键盘输入一个数,判别是否在序列中,如果不在,则输出"NO",
否则,将它从序列中删除它,并输出删除后的序列。
#include"stdio.h"
数据结构上机题
#include"stdlib.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OVERFLOW -2
#define OK 1
typedef struct
{ int *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L)
{ L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
int Input(SqList &L)
{ int i,j;
int *pa=L.elem;
printf("要输入的元素个数:");
scanf("%d",&i);
printf("输入有序序列:");
for(j=0;j<i;j++)
{ scanf("%d",pa++);
L.length=i;
}
printf("\n");
return OK;
}
int Output(SqList &L)
{ printf("输出序列:");
int i=0;
while(i<L.length)printf("%d ",L.elem[i++]);
printf("\n");
return OK;
}
int Searchanddelete(SqList &L,int e)
{ int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e)
{
int j;
for(j=i;j<=L.length;j++)
数据结构上机题
L.elem[j]=L.elem[j+1];
L.length-=1;
return 0;
}
if(i==L.length)printf("No!\n");
return 1;
}
int main()
{SqList La;
InitList_Sq(La);
Input(La);
int e;
printf("请输入一个数");
scanf("%d",&e);
Searchanddelete(La,e);
printf("操作后的数据:");
Output(La);
return OK;
}
//4、从键盘输入一组任意数据,建立一个有序链表,并从链头开始输出该链,使输出结果是
有序的。
#include"stdio.h"
#include"stdlib.h"
#define OK 1
typedef struct LNode{
int data;
struct LNode*next;
}LNode, *LinkList;
int CreateList_L(LinkList &L,int n)//输入 n 个元素的值,建立带头结点的单链线性表
{int i;
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=L;
for(i=0;i<n;i++)
{p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=NULL;
q->next=p;
q=q->next;
}
return OK;
}
剩余24页未读,继续阅读
资源评论
- qq_480848402023-06-13资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
是空空呀
- 粉丝: 171
- 资源: 3万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功