一天一小步,不能颓了
#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;
}