函数用c语言实现顺序表 用c语言编写顺序表( 五 )


{
printf("输入个数大于顺序表的长度\n");
return 0;
}
for(i=0;inumber;i++)
{
printf("输入第%d个数: ",i+1);
scanf("%d",L-elem+i);//L-elem+i:每次的输入都保存在顺序表元素中的下一个地址,而不是一直放在元素的首地址
}//给顺序表中每个数据元素赋值
L-length=number;//当前顺序表的长度
return 1;
}
void print(SqList* L)//输出当前顺序表
{
int i;
for(i=0;iL-length;i++)
{
printf("%-3d",*(L-elem + i)); //L-elem+i:和输入是一个道理
}
printf("\n");
}
int main()
{
SqList* L = InitList();//申请一个指向顺序表的指针,并对其初始化
if(!L)//判断申请是否成功
{
printf("初始化线性表失败\n");
return 1;
}
if(!CreateList(L))//判断创建顺序表是否成功
{
printf("创建顺序表失败\n");
return 1;
}
print(L);//打印顺序表
free(L-elem);//释放申请的顺序表元素的内存
free(L);//释放申请的顺序表内存
return 0;
}
运行效果如图:
顺序表和链表的基本操作 , 用C语言实现!顺序存储的线性表的算法
#include"stdio.h"
#include "stdlib.h"
#define Status int
#define OVERFLOW 0
#define TRUE 1
#define FALSE 0
#define OK 1
#define MAXSIZE 100
typedefint ElemType;
typedef struct list
{ElemType elem[MAXSIZE];
int length;
}SqList;
void InitList(SqList L){
L.length=0;
}
/*建立顺序表*/
void CreateList(SqList L)
{
inti;
printf("input the length");
scanf("%d",L.length);//输入表长
for(i=1;i=L.length;i++)
scanf("%d",L.elem[i-1]);//输入元素
}
//顺序表的遍历
void printdata(ElemType e){
printf("%4d",e);
}
void Traverse(SqList L,void (*visit)(ElemType e))
{ inti;
printf("The elements of the lists are:\n");
for(i=1;i=L.length;i++){
if (i%10==0)printf("\n");//每行显示10个元素
visit(L.elem[i-1]);//输出表中元素
}
printf("\n");
}
//有序顺序表L中插入元素e使序列仍有序
void Insert(SqList L,ElemType e)
{int i,j;
if (L.length==MAXSIZE)exit(OVERFLOW);//表满,不能插入
for(i=1;i=L.lengthL.elem[i-1]=e;i++);//向后查找
for(j=L.length;j=i;j--)
L.elem[j]=L.elem[j-1];//元素后移
L.elem[i-1]=e;//插入e
L.length=L.length+1;//表长加1
}
//建立递增有序的顺序表
void CreateList_Sorted(SqList L)
{int i,num;
ElemType e;
L.length=0;
printf("Create a sorted list,Input the length of the list\n");
scanf("%d",num);
printf("Input the data%d numbers\n",num);
for(i=1;i=num;i++){
scanf("%d",e);
Insert(L,e);
}
}
/*Merge two sorted lists*/
void MergeList(SqList La,SqList Lb,SqList Lc)
{int *pa,*pb,*pc;
if (La.length+Lb.lengthMAXSIZE) exit(OVERFLOW);
else
{pa=La.elem;pb=Lb.elem;pc=Lc.elem;
while (paLa.elem+La.lengthpbLb.elem+Lb.length)
*pc++=(*pa=*pb)?*pa++:*pb++;/*公共部分合并*/
while (paLa.elem+La.length) *pc++=*pa++;
/*R1表的剩余部分放到R的后部*/
while (pbLb.elem+Lb.length) *pc++=*pb++;
/*R2表的剩余部分放到R的后部*/
Lc.length=La.length+Lb.length;/*R表长*/
}
}
//判断元素是否对称,对称返回TRUE 否则返回FALSE
Status Symmetric(SqList L)
{int low,high;
low=0;
high=L.length-1;
while(lowhigh)
if (L.elem[low]==L.elem[high]){low++;high--;}
else return(FALSE);return(TRUE);}
//顺序表的主函数部分
//#include "seqlist.h"

推荐阅读