这是线性表的一种顺序存储结构--顺序表的一个应用,对于顺序表要熟练掌握它的定义,需要一段连续的内存空间来存储,即用数组来存储,然后还要熟练掌握顺序表的插入,删除,初始化,取表元,及按值查找。。。。。。
(一)对于线性表的基本操作:
(1)初始化:构造空表。
Init_List(L);
(2)求表长:球线性表中元素的个数。
Length_List(L);
(3)取表元:取出L中第i个元素的值或地址(1<=i<=Length_List(L))。
Get_List(L,i);
(4)按值查找:查找L中首次出现值为x的地址或序号。
Locate_List(L,x);
(5)插入:在L的i位置插入元素值x(1<=i<=n+1(n为插入前的表长))。
Insert_List(L,i,x);
(6)删除:在L的位置i删除元素(1<=i<=n)
Delete_List(L,i);
(二)顺序表的定义:
#define MAXSIZE ......
typedef int(char,double.......) DateType;
typedef struct{
DateType data[MAXSIZE];
int last;
}seqlist;
seqlist L,*L;
定义seqlist *L于定义seqlist L的差别;
前者为定义指向结构体的指针,后者为定义一个结构体;
前者的(*L).data[i]和L->data[i]与后者的L.data[i]等价;
(三)对于顺序表的基本操作:
(1)顺序表的初始化:
seqlist* Init_seqlist()
{
seqlist *L;
L=(seqlist *)malloc(sizeof(seqlist));
L->last=-1;
return L;
}
(2)顺序表的插入:
seqlist *Insert(seqlist *L,int i,DateType x)
{
if(L->last=MAXSIZE-1)
printf("表满\n");
return NULL;
if(i<1||i>L->last+2)
printf("位置错\n");
for(int j=L->last,j>=i-1;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=x;
L->last++;
return L;
}
(3)顺序表的删除:
seqlist *Delete_seqlist(seqlist *L,int i)
{
if(i<1||i>L->last+1)
printf("不存在i\n");
return NULL;
for(int j=i;j<=L->last;j++)
{
}
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int DateType;
typedef struct
{
DateType data[MAXSIZE];
int last;
}seqlist;
seqlist *Init_seqlist()
{
int n;
seqlist *L;
L=(seqlist *)malloc(sizeof(seqlist));
L->last=-1;
printf("请输入顺序表的元素个数:\n");
scanf("%d",&n);
L->last=n-1;
printf("请输入一个顺序表:\n");
for(int i=0;i<n;i++)
{
printf("顺序表的第%d个元素为:\n",i+1);
scanf("%d",&L->data[i]);
}
return L;
}
seqlist *part_seqlist(seqlist *s)
{
int t,k;
t=s->data[0];
for(int i=1;i<=s->last;i++)
{
if(s->data[i]<t)
{
k=s->data[i];
for(int j=i-1;j>=0;j--)
{
s->data[j+1]=s->data[j];
}
s->data[0]=k;
}
}
return s;
}
int main()
{
seqlist *L,*S;
L=Init_seqlist();
printf("划分前的顺序表为:\n");
for(int i=0;i<=L->last;i++)
{
if(i==0)
{
printf("%d",L->data[i]);
}
else
{
printf(" %d",L->data[i]);
}
}
printf("\n");
S=part_seqlist(L);
printf("划分后的顺序表为:\n");
for(int i=0;i<=S->last;i++)
{
if(i==0)
{
printf("%d",S->data[i]);
}
else
{
printf(" %d",S->data[i]);
}
}
printf("\n");
system("pause");
return 0;
}