首页 数据结构:顺序线性表

数据结构:顺序线性表

举报
开通vip

数据结构:顺序线性表数据结构:顺序线性表 数据结构:顺序线性表 //利用线性表的顺序存储结构实现线性表的创建、插入、删除、查找 等算法 /*顺序线性表*/ #include #define INITSIZE 50 #define ADDNODE 10 typedef struct element { int data; } ELEMENT; typedef struct { ELEMENT *sq; int size; int length; }SLIST; SLIST sqlist,*list; E...

数据结构:顺序线性表
数据结构:顺序线性 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 数据结构:顺序线性表 //利用线性表的顺序存储结构实现线性表的创建、插入、删除、查找 等算法 /*顺序线性表*/ #include #define INITSIZE 50 #define ADDNODE 10 typedef struct element { int data; } ELEMENT; typedef struct { ELEMENT *sq; int size; int length; }SLIST; SLIST sqlist,*list; ELEMENT elem,*p; void listcreate( ) /*建立线性表*/ { int i; list=&sqlist; list->sq=(ELEMENT *)malloc( INITSIZE*sizeof(ELEMENT)) if(!list->sq) exit(0); list->size=INITSIZE; list->length=0; } if(list->sq!=NULL) { printf(" INPUT LIST LENGTH: "); scanf("%d",&list ->length); for(i=0;ilength;i++) scanf("%d",&list->sq[i]); } } void freelist( ) /*撤消线性表*/ { if(list->sq!=NULL) { free( list->sq); list->size=0; list->length=0; } } void listlen( ) /*求线性表长度*/ { if(list->sq!=0) { printf("list length is: "); printf("%d",list->length); } getch( ); } int findelement( ) /*查找数据元素*/ { int i; printf("\\n input find elemnt :" ); scanf("%d", &elem.data); for(i=0;ilength;i++) if(list->sq[i].data==elem.data) { printf ("\\n element position :"); printf("%d",i+1); getch(); return(i+1); } printf("not find!"); getch(); return( 0); } void listinsert( ) /*数据元素插入*/ { int i,position; ELEMENT *tmplist; printf(" input insert element: "); scanf("%d",&elem.data); printf("input insert position : "); scanf("%d",&position); if(position<1||position>list->length+1) { printf("insert position error "); return; } if(list->length==list->size) { tmplist=(ELEMENT*)realloc(list->sq,(list->size+ADDNODE)*siz eof(ELEMENT)); if(tmplist==NULL) { printf("not space"); exit(0); } list->sq=tmplist; list->size=list->size+ADDNODE; } list->length++; for(i=list->length-1;i>=position-1;i--) list->sq[i+1]=list->sq[i]; list->sq[position-1].data=elem.data; } void listdelete( ) /*数据元素删除*/ { int i, position; printf("input delete element : "); scanf ("%d",&elem.data); for(i=0;ilength;i++) { if (list->sq[i].data==elem.data) { list->length--; while(ilength) { list->sq[i]=list->sq[i+1]; i++; } } } } void getprior( ) /*求数据元素前驱*/ { int pos; ELEMENT prior; pos=findelement( ); if(pos==0) { printf("list not find element return !! "); return; } if(pos==1) { printf("find element list furst!! "); return; } prior=list->sq[pos-2]; printf("\\n prior element is : "); printf("%d",prior.data); return; } void getnext( ) /*求后继*/ { int pos ; ELEMENT next; pos=findelement( ); if(pos==0) { printf("not find rerurn !!"); return; } if(pos==list->length) { printf("list end not next element !! "); return; } next=list->sq[pos]; printf("\\n next element is :"); printf("%d",next.data); return; } void traver( ) /*遍历线性表*/ { int i; if(list->sq==NULL) return; for(i=0;ilength; i++) printf("%3d",list->sq[i].data); getch( ); } void back( ) /*逆置*/ { int i,j; ELEMENT k; j=list->length/2; for(i=0;isq[i]; list->sq[i]=list->sq[list->length-1-i]; list->sq[list->length-1-i]=k; } } void sort( ) /*排序,从小到大*/ { int i, j; ELEMENT k; for(i=list->length-1; i>=0;i--) { for(j=i-1;j>=0;j--) { if(list->sq[i].datasq[j].data) { k=list->sq[j]; list->sq[j]=list->sq[i]; list->sq[i]=k; } } } printf("the result is : "); for(i=0;ilength;i++) printf("%3d",list->sq[i].data); getch( ); } main( ) { while (1) { int ch; clrscr( ); printf("\\n\\n\\n"); printf( " list mune \\n "); printf(" 1-----------return\\n") ; printf(" 2----------createlist\\n" ); printf(" 3----------freelist\\n"); printf(" 4-----------listlen\\n"); printf(" 5-----------findelement\\n"); printf(" 6-----------listinsert\\n") ; printf(" 7-----------listdelete\\n"); printf(" 8-----------getprior\\n"); printf(" 9----------getnext\\n"); printf(" 10----------listtraver\\n"); printf(" 11---------listsort\\n"); printf(" 12---------listback\\n"); printf("\\n\\nenter your choice : "); scanf( "%d",&ch); if(ch<=0||ch>=14) continue; switch(ch) { case 1: exit(0); case 2: listcreate( ); break; case 3: freelist( ); printf("list have already been freed!"); break; case 4: listlen ( ); break; case 5: findelement( ); break; case 6: traver(); printf("\\n"); listinsert ( ); traver(); break; case 7: traver(); printf("\\n"); listdelete ( ); traver(); break; case 8: printf ("list elementsi :\\n"); traver(); getprior( ); getch( ); break; case 9: traver( ); getnext( ); getch( ); break; case 10: traver( ); break; case 11: printf("list before sorting is:\\n"); traver( ); printf("\\n"); printf("list after sorting is:\\n"); sort( ); break; case 12: printf("list befor backing is:\\n"); traver( ); printf("\\n"); back( ); printf("list after backing is:\\n"); traver( ); break; } } }
本文档为【数据结构:顺序线性表】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-12-07
浏览量:14