




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内 蒙 古 科 技 大 学数 据 结 构 原 理班级 09 信 管 1 班 学号 姓名 0 9 6 5 1 3 8XXX 成绩 一、 顺序表的操作(1)插入元素操作:将新元素x插入到顺序表a中第i个位置。(2)删除元素操作:删除顺序表a中第i个元素。#include#include #define LIST_INIT_SIZE 10#define LISTINCREMENT 10#define ERROR 0#define OK 1#define OVERFLOW -1typedef struct int *elem; int length; int listsize; SqList;int InitList(SqList *L) int i,k; L-elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int); if(!L-elem) exit(OVERFLOW); L-length =10; L-listsize = LIST_INIT_SIZE; for(i=0;ilength;i+) scanf(%d,&k); L-elemi=k; return OK;int ListInsert(SqList *L,int i, int e) int *newbase,*q,*p; if(iL-length+1) return ERROR; if(L-length=L-listsize) newbase = ( int *)realloc(L-elem,( L-listsize +LISTINCREMENT)*sizeof(int); if(!newbase) exit(OVERFLOW) ; L-elem = newbase; L-listsize+=LISTINCREMENT; q=&(L-elemi-1); for(p=&(L-elemL-length-1);p=q;-p) *(p+1)=*p; *q=e; +L-length; return OK;int ListDelete(SqList *L, int i, int e) int *p, *q; if (iL-length) return ERROR; p = &(L-elemi-1); e = *p; q = L-elem+L-length-1; for (+p; plength; return OK; int display(SqList *L) int i; for(i=0;ilength;i+) printf(%d,L-elemi); printf( ); return OK;int main() SqList L; char e; int i,num; printf(请初始化10个元素:n);InitList(&L);printf(初始化后);display(&L);printf(n请输入你要删除的元素的位置n);scanf(%d,&i);ListDelete(&L,i,e);printf(删除后:n);display(&L);printf(n请输入插入位置和元素(格式“位置”,“元素”));scanf(%d,%d,&i,&num);ListInsert(&L,i,num);printf(插入后:n);display(&L);return OK;二、单链表的操作(1)创建一个带头结点的单链表;(2)插入元素操作:将新元素x插入到单链表中第i个元素之后;(3)删除元素操作:删除单链表中值为x的元素;#include#include#define Null 0typedef int Element;typedef struct LNodeElement date;struct LNode *next;LNode,*LinkeList;LNode *Create(int n)int i;LNode *head,*now;head=(LNode*)malloc(sizeof(LNode);head-next=Null;for(i=0;idate);now-next=head-next;head-next=now;return head;int InsertNode(LNode*l,int i,Element e)LNode *now=l;int j=0;while(now&jnext;j+;if(!now|ji-1)printf(插入位置I不恰当!);return 0;LNode *s;s=(LNode*)malloc(sizeof(LNode);s-date=e;s-next=now-next;now-next=s;return 1;int DleteNode(LinkeList &l,int i)Element e;LNode*now,*d;int j=0;now=l;while(now-next&jnext;j+;if(!now|ji-1)printf();return 0;d=now-next;now-next=d-next;e=d-date;free(d);return e;void DisplayList(LinkeList &l)LNode * now;now=l-next;while(now!=Null)printf(%d ,now-date);now=now-next;void main()LNode *l;int num=0,ch=0;printf(输入链表长度:);scanf(%d,&num);printf(请输入个元素:n);l=Create(num);printf(初始化为:);DisplayList(l);printf(n请输入插入位置和元素(格式“位置”,“元素”));scanf(%d,%d,&num,&ch);if(InsertNode(l,num,ch)printf(n插入后为:);DisplayList(l);printf(n请输入删除位置:);scanf(%d,&num);printf(n第%d个位置元素为“%d”n删除后为:,num,DleteNode(l,num);DisplayList(l);三、在顺序栈上实现将非负十进制数转换成二进制数。#include#include#define MAX 30typedef structint size;int *base,*top;SqStack;int InitStack(SqStack &s)s.base=(int *)malloc(MAX*sizeof(int);if(!s.base) return 0;s.top =s.base ;s.size =MAX;return 1;int Push(SqStack &s,int e)if(s.top-s.base s.size )s.base=(int*)realloc(s.base,(s.size +10)*sizeof(int);if(!s.base)return 0;s.top =s.base+s.size ;s.size +=10;*s.top +=e;return 1;int Pop(SqStack &s,int &e)if(s.base =s.top )return 0;e=*-s.top;return 1;void main()int num,k;SqStack l;InitStack(l);while(1)printf(请输入欲转换的十进制数!);scanf(%d,&num); while(num/2)!=0|(num)!=1)Push(l,num%2);num=num/2;Push(l,num%2);printf(转化结果为:);while(Pop(l,k)printf(%d,k);printf(n);四、在顺序表中采用顺序查找算法和折半查找算法寻找关键字X在顺序表中的位置。#include#include #define LIST_INIT_SIZE 10#define ERROR 0#define OK 1#define OVERFLOW -1#define TYPE inttypedef struct TYPE *elem; int length; int listsize; SqList;int InitList(SqList *L) int i; L-elem=(TYPE *)malloc(LIST_INIT_SIZE*sizeof(TYPE); if(!L-elem) exit(OVERFLOW); L-length =10; L-listsize = LIST_INIT_SIZE; for(i=0;ilength;i+) L-elemi=i*i; return OK;int SequanceSearch(SqList &l,int n, TYPE c)int i=1;int position;while(in)if(l.elem i-1=c)position=i;break;else position=-1;i+;if(position=n)return position;else return ERROR;int BinSearch(SqList &l,TYPE c)int low=0,mid,high=l.length ;while(low=high)mid=(low+high)/2;if(c=l.elem mid)return mid;elseif(cl.elem mid)high=mid-1;else low=mid+1;return ERROR;int display(SqList *L) int i; for(i=0;ilength;i+) printf(%d,L-elemi); printf( ); return OK;int main() SqList L; TYPE e; int i ; InitList(&L);printf(初始化顺序表为:);display(&L);while(1)printf(n顺序查找查什么?n);scanf(%d,&e);i=SequanceSearch(L,LIST_INIT_SIZE,e);if(i=ERROR)printf(顺序表没有该元素!n);else printf(所查元素所在位置为:%dn,i);printf(n折半查找查什么?n);scanf(%d,&e);i=BinSearch(L,e);if(i=ERROR)printf(顺序表没有该元素!n);else printf(所查元素所在位置为:%dn,i+1);return OK;五、将无序数列使用直接插入排序算法和快速排序算法将其排成递增有序数列。 #include #define MAX 15#define SWAP(x,y) int t; t = x; x = y; y = t; void Display(int a, int n) for (int i=0; in; i+) printf(%d ,ai); printf(n); void InsertSort(int a,int n) int i,j,temp; for (i=1; i=0 & temp aj; j-) aj+1 = aj; aj+1 = temp; Display(a, MAX); void QuickSort(int a,int low,int high) int z=0,y=0,k=0; if(low=high) z=low; y=high; k=az; do while(z=k)y-; if(zy)az =ay ; while(zy)&(az)k)z+; if(zy) ay =az ; Display(a,MAX); while(zy); az =k; QuickSort(a,low,z-1); QuickSort(a,z+1,high); void mai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋施工技术质量管理培训
- 冬季装维作业安全培训
- 2024中国黄金集团投资有限公司招聘3人笔试参考题库附带答案详解
- 班组长综合管理技能培训大纲
- 九年级上册第三单元 西南情韵欣赏☆瑶族舞曲教案
- 2024中国能源建设股份有限公司北方区域总部(北方建投)管理岗位招聘1人笔试参考题库附带答案详解
- 人教版高中物理必修2《5.向心加速度》教学设计
- 程序员培训感悟:从迷茫到豁然开朗
- 成人消防安全培训
- 窗帘布艺培训
- 腰椎间盘突出症课件(共100张课件)
- 人教版2024-2025学年六年级数学上册5.4 扇形的面积 同步练习(附答案解析)
- A、B封灌胶来料检验标准
- 西安丝路智慧-智慧文旅云服务平台建设方案
- 2025年4月自考00504艺术概论押题及答案
- 第九届全国大学生测井技能大赛备赛试题库-中(多选题)
- 公交驾驶员心理素质培训考核试卷
- 【安踏体育跨国并购亚玛芬体育的财务绩效探究12000字(论文)】
- 二下音乐《阿西里西(简谱、五线谱)》公开课课件
- 土方工程转让合同范本2024年
- 2024年甘肃省中考英语真题(含答案)
评论
0/150
提交评论