数据结构实验源代码Word文件下载.doc

上传人:wj 文档编号:6981483 上传时间:2023-05-07 格式:DOC 页数:62 大小:460KB
下载 相关 举报
数据结构实验源代码Word文件下载.doc_第1页
第1页 / 共62页
数据结构实验源代码Word文件下载.doc_第2页
第2页 / 共62页
数据结构实验源代码Word文件下载.doc_第3页
第3页 / 共62页
数据结构实验源代码Word文件下载.doc_第4页
第4页 / 共62页
数据结构实验源代码Word文件下载.doc_第5页
第5页 / 共62页
数据结构实验源代码Word文件下载.doc_第6页
第6页 / 共62页
数据结构实验源代码Word文件下载.doc_第7页
第7页 / 共62页
数据结构实验源代码Word文件下载.doc_第8页
第8页 / 共62页
数据结构实验源代码Word文件下载.doc_第9页
第9页 / 共62页
数据结构实验源代码Word文件下载.doc_第10页
第10页 / 共62页
数据结构实验源代码Word文件下载.doc_第11页
第11页 / 共62页
数据结构实验源代码Word文件下载.doc_第12页
第12页 / 共62页
数据结构实验源代码Word文件下载.doc_第13页
第13页 / 共62页
数据结构实验源代码Word文件下载.doc_第14页
第14页 / 共62页
数据结构实验源代码Word文件下载.doc_第15页
第15页 / 共62页
数据结构实验源代码Word文件下载.doc_第16页
第16页 / 共62页
数据结构实验源代码Word文件下载.doc_第17页
第17页 / 共62页
数据结构实验源代码Word文件下载.doc_第18页
第18页 / 共62页
数据结构实验源代码Word文件下载.doc_第19页
第19页 / 共62页
数据结构实验源代码Word文件下载.doc_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验源代码Word文件下载.doc

《数据结构实验源代码Word文件下载.doc》由会员分享,可在线阅读,更多相关《数据结构实验源代码Word文件下载.doc(62页珍藏版)》请在冰点文库上搜索。

数据结构实验源代码Word文件下载.doc

计17 

健康

提示:

循环表

62

#include<

string.h>

#include<

ctype.h>

malloc.h>

//malloc()等

limits.h>

//INT_MAX等

stdio.h>

//EOF(=^Z或F6),NULL

stdlib.h>

//atoi()

io.h>

//eof()

math.h>

//floor(),ceil(),abs()

process.h>

//exit()

//函数结果状态代码

#defineTRUE1

#defineFALSE0

#defineOK1

#defineERROR0

#defineINFEASIBLE-1

//#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行

typedefintStatus;

//Status是函数的类型,其值是函数结果状态代码,如OK等

typedefintBoolean;

//Boolean是布尔类型,其值是TRUE或FALSE

structstud

{

charname[12];

charnum[12];

charsex[4];

intage;

charclas[10];

charhealth[16];

};

typedefstudElemType;

typedefstructLNode

ElemTypedate;

structLNode*next;

}LNode,*LinkList;

voidCreateList2(LinkList&

L,intn)

{//正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表

inti;

LinkListp,q;

L=(LinkList)malloc(sizeof(LNode));

//生成头结点

q=L;

scanf("

%s%s%s%d%s%s"

L->

date.name,L->

date.num,L->

date.sex,&

L->

date.age,L->

date.clas,L->

date.health);

for(i=1;

i<

n;

i++)

{

p=(LinkList)malloc(sizeof(LNode));

scanf("

p->

date.name,p->

date.num,p->

p->

date.age,p->

date.clas,p->

q->

next=p;

q=q->

next;

}

p->

next=L;

}

voidrun(LinkListL,intm)

{

inti;

LinkListp,q;

p=L;

while(p)

{

for(i=1;

m;

{

q=p;

p=p->

}

printf("

%s%s%s%d%s%s\n"

date.sex,p->

q->

next=p->

free(p);

p=q->

if(p==p->

next)

{

break;

}

}

printf("

%s%s%s%d%s%s"

\n"

);

free(p);

//要将P释放掉,应为在前面L已经被释放掉

intmain()

intn,m;

LinkListLa;

学生信息管理

用链式存储结构实现对一个班级学生信息管理。

设计程序求出每个人的平均成绩并按平均成绩由高到底排序后输出学生记录。

人数n

学号姓名成绩1 

成绩2 

成绩3)

人员记录x 

 

1

人员记录y 

2

人员记录z 

n

3

1孙俪莉 

76 

78 

89 

2章子怡 

72 

56 

67 

3刘德华 

84 

90

76 

78 

89 

81.00 

3刘德华56 

84 

90 

76.67 

2章子怡72 

67 

65.00 

#defineMaxSize1000

typedefstructStudent

longnum;

charname[10];

floatscore_1;

floatscore_2;

floatscore_3;

floatave_score;

longrank;

}StudentType;

typedefStudentTypeDataType;

typedefstructNode

DataTypedata;

structNode*next;

}SLNode;

voidListInitiate(SLNode**L)

if((*L=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit

(1);

(*L)->

next=NULL;

}

intListInsert(SLNode*L,inti,DataTypex)

SLNode*p,*q;

intj;

p=L;

j=0;

while(p->

next!

=NULL&

&

j<

i-1)

p=p->

j++;

if(j!

=i-1)

printf("

error"

return0;

if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit

(1);

q->

data=x;

p->

next=q;

return0;

voidRanking(SLNode*L)

SLNode*p,*q,*s;

longi=0;

=NULL)

p->

data.ave_score=(p->

data.score_1+p->

data.score_2+p->

data.score_3)/3;

i++;

while(i--)

p=L;

s=p;

q=p->

while(p->

{

if(p->

data.ave_score<

q->

data.ave_score)

{

if(q->

p->

next=q->

else

q->

s->

q=p->

s=s->

}

else//后移

s=p;

p=p->

}

i=1;

data.rank=i++;

voidDestroy(SLNode**L)

SLNode*p,*p1;

p=*L;

while(p!

p1=p;

free(p1);

*L=NULL;

intmain(void)

SLNode*L,*p;

StudentTypex[MaxSize];

intn;

inti;

ListInitiate(&

L);

scanf("

%d"

&

n);

//班级人数

for(i=1;

i<

=n;

i++)

scanf("

%ld"

x[i].num);

%s"

x[i].name);

%f"

&

x[i].score_1);

x[i].score_2);

x[i].score_3);

ListInsert(L,i,x[i]);

Ranking(L);

%ld"

p->

data.num);

%s"

p->

data.name);

%.2f"

data.score_1);

data.score_2);

data.score_3);

data.ave_score);

%ld\n"

data.rank);

Destroy(&

链表上的基本操作实现

在单链表存储结构上实现基本操作:

初始化、创建、插入、删除、查找、遍历、逆置、合并运算。

线性表长度n

a1a2a3...an(数值有序,为降序)

要插入到线性表中的数字x和插入的位置i

要删除的数字的位置i

要查找的数字x

线性表长度m

b1b2...bm(数值有序,为升序)

创建的线性表a1a2...an

插入一个数字后的线性表a1a2...an+1

删除一个数字后的线性表a1a2...an

查找一个输入的数字后如果找到,输出该数字的位置i,如果没有找到,输出“没有找到x”的信息。

逆置a1a2...an后的线性表anan-1...a1

合并两个线性表后的线性表

请输入线性表La的长度:

6

请输入线性表La中的元素:

151310 

85

请输入要插入到线性表La中的数字x和要插入的位置:

76

线性表La=151310 

875(输出)

请输入要删除的数字的位置:

4

请输入要查找的数字:

10

找到,10在第3个位置

逆置线性表La=578101315

请输入线性表Lb的长度:

请输入线性表Lb中的元素:

1369

合并La和Lb后的线性表为:

1356789101315

#defineOK1

#defineERROR0

#defineOVERFLOW-2

typedefintElemType;

typedefintStatus;

#defineLIST_INIT_SIZE4//线性表存储空间的初始分配量

#defineLISTINCREMENT2//线性表存储空间的分配增量

structSqList

ElemType*elem;

//存储空间基址

intlength;

//当前长度

intlistsize;

//当前分配的存储容量(以sizeof(ElemType)为单位)

}Sqlist;

StatusInitList_Sq(SqList&

L)

//操作结果:

构造一个空的顺序线性表

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!

L.elem)

exit(OVERFLOW);

//存储分配失败

L.length=0;

//空表长度为0

L.listsize=LIST_INIT_SIZE;

//初始存储容量

returnOK;

StatusListInsert_Sq(SqList&

L,inti,ElemTypee)

//初始条件:

顺序线性表L已存在,1≤i≤ListLength(L)+1

在L中第i个位置之前插入新的数据元素e,L的长度加1

ElemType*newbase,*q,*p;

if(i<

1||i>

L.length+1)//i值不合法

returnERROR;

if(L.length>

=L.listsize)//当前存储空间已满,增加分配

if(!

(newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType))))

exit(OVERFLOW);

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;

//插入eListInsert(Lb,)

++L.length;

//表长增1

StatusListprint_Sq(SqList&

for(i=0;

=L.length-1;

%d"

L.elem[i]);

StatusListDelete_Sq(SqList&

L,inti,ElemType&

e)

ElemType*p,*q;

if((i<

1)||(i>

L.length))

returnERROR;

p=L.elem+i-1;

e=*p;

q=L.elem+L.length-1;

for(p=L.elem+i;

p<

++p)

*(p-1)=*p;

--L.length;

intLocateElem_Sq(SqListL,ElemTypee)

inti=1;

for(p=L.elem;

p++)

if(*p==e)

returni;

break;

i++;

StatusListNiZhi_Sq(SqList&

ElemTypee;

q=&

L.elem[L.length-1];

for(p=L.elem;

q;

e=*p;

*p=*q;

*q=e;

q--;

voidMergeList_Sq(SqListLa,SqListLb,SqList&

Lc)

ElemType*pa,*pb,*pc,*pa_last,*pb_last;

pa=La.elem;

pb=Lb.elem;

Lc.listsize=Lc.length=La.length+Lb.length;

pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));

Lc.elem)

exit(OVERFLOW);

pa_last=La.elem+La.length-1;

pb_last=Lb.elem+Lb.length-1;

while(pa<

=pa_last&

pb<

=pb_last)

if(*pa<

=*pb)

*pc++=*pa++;

else

*pc++=*pb++;

=pa_last)

*pc++=*pa++;

while(pb<

*pc++=*pb++;

SqListLa;

//建立线性表La

InitList_Sq(La);

intj,n,c,i,x;

for(j=0;

j<

n;

j++)

c);

ListInsert_Sq(La,j+1,c);

创建好的线性表La="

Listprint_Sq(La);

%d%d"

x,&

i);

ListInsert_Sq(La,i,x);

插入一个元素后的线性表La="

intm;

m);

ListDelete_Sq(La,m,e);

删除一个元素后的线性表La="

ElemTypea;

intt;

a);

t=LocateElem_Sq(La,a);

if(t)

找到,%d在第%d个位置\n"

a,t);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2