数据结构:顺序线性
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易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;
}
}
}