顺序表1

来源:互联网 发布:淘宝猪哼少是正品澄清 编辑:程序博客网 时间:2024/04/30 01:24

一天一小步,不能颓了

#include
#include
#define MAXSIZE 1000

typedef struct {
 int data[MAXSIZE];
 int last;//记录当前线性表中最后一个元素在数组中的位置,表长last+1
}Seqlist;

//顺序表初始化
Seqlist *init_Seqlist()
{
 Seqlist *L=malloc(sizeof(Seqlist));
 L->last=-1;
 return L;
}
//顺序表的打印
void print(Seqlist *L)
{
 int i;
 if(L->last==-1)
  printf("NULL");
 else
 for(i=0;i<=L->last;i++)
  printf("第%d个元素为:%d\n",i+1,L->data[i]);
}

//顺序表的长度
int length_Seqlist(Seqlist *L)
{
 return L->last+1;
}

//返回线性表L中第i个元素的值
int Get_Seqlist(Seqlist *L,int i)
{
 if(i>=0&&i<=length_Seqlist(L))
  return L->data[i];
}
//按值查找,返回存储位置
//查找值为x的在链表中的位置
int Location_(Seqlist *L,int x)
{
 int i=0;
 while(i<=L->last&&L->data[i]!=x)
  i++;
 if(i>L->last)
  return -1;
 else return -i;
}


//顺序表的插入
void Insert_Seqlist(Seqlist *L,int i,int x)
{
 int j;
 if(L->last==MAXSIZE-1)
 printf("表满!\n");}
 if(i<1||i>L->last+2)
 printf("位置错!");}
 for(j=L->last;j>i-1;j--)
 {
  L->data[j+1]=L->data[j];
 }
 L->data[i-1]=x;
 L->last++;

}
//顺序表的删除
void Delete_Seqlist(Seqlist *L,int i)
{
 int j;
 if(i<1||i>L->last-1)
 printf("不存在第%d个元素",i);}
 for(j=i;j<=L->last-1;j++)
 L->data[j]=L->data[j+1];}
 L->last--;
}
//顺序表从小到大排列
void sort(Seqlist *L)
{
 int i,j;
 int x,y;
 x=L->data[0];
 for(i=1;i<=L->last;i++)
  if(L->data[i]
  {
   y=L->data[i];
   for(j=i-1;j>=0;j--)
   {
    L->data[j+1]=L->data[j];
   }
   L->data[0]=y;
  }
}

//有序表的合并算法
void merge(Seqlist *A,Seqlist *B,Seqlist *C)
{
 int i,j,k;
 i=0,j=0,k=0;
 while(i<=A->last&&j<=B->last)
 {if(A->data[i]data[j])
   C->data[k++]=A->data[i++];
  else
   C->data[k++]=B->data[j++];
 }
 while(i<=A->last)
  C->data[k++]=A->data[i++];
 while(i<=B->last)
  C->data[k++]=B->data[j++];
 C->last=k-1;
}

main()
{
 Seqlist *L;
 L=init_Seqlist();
 Insert_Seqlist(L,1,250);
 Insert_Seqlist(L,2,111);
 print(L);
 return 0;
}

0 0
原创粉丝点击