数据结构Word文件下载.docx
- 文档编号:21995718
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:33
- 大小:23.50KB
数据结构Word文件下载.docx
《数据结构Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
char*classnum;
char*health;
intnum;
structLnode*next;
}*L;
typedefstructLnodeLinklist;
voidCreat(Linklist*q,intn);
voidOpe(Linklist*p,intm);
intmain()
intn,m;
scanf("
%d%d"
&
n,&
m);
L=(Linklist*)malloc(sizeof(Linklist));
Creat(L,n);
Ope(L,m);
return0;
}
voidCreat(Linklist*L,intn)
inti=1;
Linklist*p,*q;
p=L;
p->
name=(char*)malloc(10*sizeof(char));
number=(char*)malloc(10*sizeof(char));
sex=(char*)malloc(4*sizeof(char));
classnum=(char*)malloc(10*sizeof(char));
health=(char*)malloc(6*sizeof(char));
%s%s%s%d%s%s"
p->
name,p->
number,p->
sex,&
p->
age,p->
classnum,p->
health);
num=i;
next=NULL;
for(i=1;
i<
n;
i++)
{
q=(Linklist*)malloc(sizeof(Linklist));
q->
q->
name,q->
number,q->
q->
age,q->
classnum,q->
num=i+1;
next=q;
p=q;
}
next=L;
voidOpe(Linklist*L,intm)
Linklist*pre,*cur;
cur=pre=L;
while(cur->
next!
=cur)
for(;
m;
pre=cur;
cur=cur->
next;
pre->
next=cur->
i=1;
printf("
%s%s%s%d%s%s\n"
cur->
name,cur->
number,cur->
sex,cur->
age,cur->
classnum,cur->
free(cur);
cur=pre->
}
string.h>
ctype.h>
malloc.h>
//malloc()等
limits.h>
//INT_MAX等
//EOF(=^Z或F6),NULL
//atoi()
io.h>
//eof()
math.h>
//floor(),ceil(),abs()
process.h>
//exit()
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
typedefstruct
charname[20];
charnum[10];
charsex[3];
charclas[10];
charhealth[20];
structnode*next;
}ElemType;
typedefstructLNode
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
voidRun(LinkListL,intm)
LinkListp=L,q;
intj;
if(m==1)
for(q=p;
=p;
q=q->
next)
data.name,q->
data.num,q->
data.sex,q->
data.age,q->
data.clas,q->
data.health);
else
while(p->
=p)
for(j=1;
j<
j++)
q=p;
p=p->
data.name,p->
data.num,p->
data.sex,p->
data.age,p->
data.clas,p->
next=p->
free(p);
p=q->
voidGetList(LinkList&
L,intn)
LinkListp,q;
inti;
L=(LinkList)malloc(sizeof(LNode));
L->
data.name,L->
data.num,L->
data.sex,&
(L->
data.age),L->
data.clas,L->
q=L;
p=(LinkList)malloc(sizeof(LNode));
(p->
data.age),p->
next=p;
next=L;
inti,j;
j,&
i);
LinkListL;
GetList(L,j);
Run(L,i);
二、试题查看
学生信息管理
1000ms
20000K
用链式存储结构实现对一个班级学生信息管理。
设计程序求出每个人的平均成绩并按平均成绩由高到底排序后输出学生记录。
人数n
学号姓名成绩1成绩2成绩3)
人员记录x1
人员记录y2
人员记录zn
3
1孙俪莉767889
2章子怡725667
3刘德华568490
1孙俪莉76788981.001
3刘德华56849076.672
2章子怡72566765.003
返回
typedefintElemType;
typedefstructStudent
charnum[30];
charname[10];
floatscore1;
floatscore2;
floatscore3;
floataverage;
structStudent*next;
}student,*stu;
voidCreatCList(stuL,ElemTypen)
stup1;
while(n>
0)
p1=(stu)malloc(sizeof(student));
%s"
p1->
num);
name);
%f"
p1->
score1);
score2);
score3);
L->
next=p1;
L=p1;
n--;
L->
next=NULL;
voidAverage(stuL)
stuh;
h=L->
while(h)
h->
average=((h->
score1)+(h->
score2)+(h->
score3))/3;
h=h->
voidList_Sort(stuL)
stup,q,r,s,l;
l=L;
p=L->
while(p)
r=p;
q=p->
while(q)
if(r->
average<
average)
r=q;
q=q->
s=p;
if(s->
average==r->
average&
&
s->
num==r->
num)
l->
next=r;
l=r;
while(s->
next->
num!
=r->
s=s->
next=r->
next=NULL;
voidTraverse(stuL,ElemTypen)
ElemTypei=0;
stup;
i++;
if(i==n&
n>
10)
%s%s%.2f%.2f%.2f%.2f%d\n"
num,p->
score1,p->
score2,p->
score3,p->
average,i);
ElemTypen;
stuL;
L=(stu)malloc(sizeof(student));
%d"
n);
CreatCList(L,n);
Average(L);
List_Sort(L);
Traverse(L,n);
三、试题查看
顺序表上的基本操作实现
10000K
在顺序存储结构实现基本操作:
初始化、创建、插入、删除、查找、遍历、逆置、合并运算。
请输入线性表La的长度:
n
a1a2a3...an(数值有序,为降序)
请输入要插入到线性表La中的数字x和插入的位置i:
xi
请输入要删除数字的位置:
i
请输入要查找的数字:
x
请输入线性表长度:
m
b1b2...bm(数值有序,为升序)
创建好的线性表La=a1a2...an
插入一个数字后的线性表a1a2...an+1
删除一个数字后的线性表a1a2...an
查找一个输入的数字后如果找到,输出该数字的位置i,如果没有找到,输出"
没有找到x"
的信息。
逆置a1a2...an后的线性表anan-1...a1
合并两个线性表后的线性表
请输入线性表La的长度:
5
请输入线性表La中的元素:
14111095
请输入要插入到线性表La中的数字x和插入的位置i:
84
线性表La=141110895
请输入要删除的数字的位置:
4
线性表La=14111095
请输入要查找的数字:
10
找到,10在第3个位置
逆置后的线性表La=59101114
请输入线性表Lb的长度:
请输入线性表Lb中的元素:
1369
合并La和Lb后的线性表为:
135699101114
typedefintStatus;
//Status是函数的类型,其值是函数结果状态代码,如OK等
#defineLIST_INIT_SIZE5//线性表存储空间的初始分配量
#defineLISTINCREMENT2//线性表存储空间的分配增量
structSqList
ElemType*elem;
//存储空间基址
intlength;
//当前长度
intlistsize;
//当前分配的存储容量(以sizeof(ElemType)为单位)
};
StatusInitList(SqList&
L)//算法2.3
{//操作结果:
构造一个空的顺序线性表
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!
L.elem)
exit(OVERFLOW);
//存储分配失败
L.length=0;
//空表长度为0
L.listsize=LIST_INIT_SIZE;
//初始存储容量
returnOK;
StatusDestroyList(SqList&
L)
{//初始条件:
顺序线性表L已存在。
操作结果:
销毁顺序线性表L
free(L.elem);
L.elem=NULL;
L.listsize=0;
intListLength(SqListL)
{//初始条件:
返回L中数据元素个数
returnL.length;
StatusGetElem(SqListL,inti,ElemType&
e)
顺序线性表L已存在,1≤i≤ListLength(L)
//操作结果:
用e返回L中第i个数据元素的值
if(i<
1||i>
L.length)
exit(ERROR);
e=*(L.elem+i-1);
intLocateElem(SqListL,ElemTypee,Status(*equal)(ElemType,ElemType))
顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)
返回L中第1个与e满足关系compare()的数据元素的位序。
//若这样的数据元素不存在,则返回值为0。
算法2.6
ElemType*p;
//i的初值为第1个元素的位序
p=L.elem;
//p的初值为第1个元素的存储位置
while(i<
=L.length&
!
equal(*p++,e))
++i;
=L.length)
returni;
StatusListInsert(SqList&
L,inti,ElemTypee)//算法2.4
顺序线性表L已存在,1≤i≤ListLength(L)+1
在L中第i个位置之前插入新的数据元素e,L的长度加1
ElemType*newbase,*q,*p;
L.length+1)//i值不合法
returnERROR;
if(L.length>
=L.listsize)//当前存储空间已满,增加分配
(newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType))))
L.elem=newbase;
//新基址
L.listsize+=LISTINCREMENT;
//增加存储容量
q=L.elem+i-1;
//q为插入位置
for(p=L.elem+L.length-1;
p>
=q;
--p)//插入位置及之后的元素右移
*(p+1)=*p;
*q=e;
//插入e
++L.length;
//表长增1
StatusListDelete(SqList&
L,inti,ElemType&
e)//算法2.5
删除L的第i个数据元素,并用e返回其值,L的长度减1
ElemType*p,*q;
L.length)//i值不合法
p=L.elem+i-1;
//p为被删除元素的位置
e=*p;
//被删除元素的值赋给e
q=L.elem+L.length-1;
//表尾元素的位置
for(++p;
p<
++p)//被删除元素之后的元素左移
*(p-1)=*p;
L.length--;
//表长减1
voidMergeList(SqListLa,SqListLb,SqList&
Lc)
inti,j=1,k=0;
intLa_len,Lb_len;
ElemTypeai,bj;
InitList(Lc);
i=La_len=ListLength(La);
Lb_len=ListLength(Lb);
while(i>
=1&
=Lb_len)
GetElem(La,i,ai);
GetElem(Lb,j,bj);
if(ai<
=bj)
ListInsert(Lc,++k,ai);
--i;
ListInsert(Lc,++k,bj);
++j;
=1)
GetElem(La,i--,ai);
while(j<
=Lb_len)//表Lb非空且表La空
GetElem(Lb,j++,bj);
Statusequal(ElemTypec1,ElemType
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构