论坛首页 编程语言技术论坛

顺序表的基本操作用C 语言实现

浏览 3742 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-20  
C++
顺序表的基本操作
void main()
{
char a[5]={'a','b','c','d','e'};
int n=5;
char f='f',b='a',e;
SqList sq;

InitList(sq);                  //初始化表

CreateList(sq,a,n);            //传入数据

DispList(sq);          //输出表

printf("sq.length=%d\n",ListLength(sq));        //输出表长

if(ListEmpty(sq))             //判断是否为空表
printf("sq是空表\n");
else
printf("sq不是空表\n");

printf("a在第%d位\n",LocateElem(sq,b));       //按元素值查找

ListInsElem(sq,f,4);       //在第4个位置上插入f元素
DispList(sq);           //输出表
printf("\n");
DelElem(sq,3,e);              //删除第三个元素
DispList(sq);          //输出表
}

这是头文件
1.h

#include<stdio.h>
const MaxSize=100;
typedef struct SqList
{
char elem[MaxSize];
int length;
}SqList,*PSqList;
SqList sq;
void InitList(SqList &sq)           //初始化线性表
{
sq.length=0;
}
void CreateList(SqList &sq,char a[],int n)        //建立表
{
int i;
for(i=0;i<n;i++)
sq.elem[i]=a[i];
sq.length=n;
}

int ListLength(SqList sq)          //求表长
{
return(sq.length);
}
char GetElem(SqList sq,int i)          //求第i个元素
{
if(i<1||i>sq.length)
return 0;
return sq.elem[i-1];
}
int LocateElem(SqList sq,char x)       //按元素值查找
{
int i=0;
while(i<sq.length&&sq.elem[i]!=x)
i++;
if(i>sq.length)
return 0;
else return i+1;
}
int ListInsElem(SqList &sq,char x,int i)        //插入元素在第i个位置
{
int j;
if(i<1||i>sq.length+1)return 0;
for(j=sq.length;j>=i;j--)
sq.elem[j]=sq.elem[j-1];
sq.elem[i-1]=x;
sq.length++;
return 1;
}
int DelElem(SqList &sq,int i,char &e)           //删除第i个元素
{
int j;
if (i<1||i>sq.length)return 0;
e=sq.elem[i];
for(j=i;j<sq.length;j++)
sq.elem[j-1]=sq.elem[j];
sq.length--;
return 1;
}
int ListEmpty(SqList &sq)             //判断表是否为空
{
return(sq.length==0);
}
void DispList(SqList sq)             //输出表
{
int i;
if(ListEmpty(sq))return;
for(i=0;i<sq.length;i++)
printf("%c\t",sq.elem[i]);
}
   发表时间:2011-10-24  
代码写得,不敢恭维,基本上是数据结构教材上的代码,建议用void指针
1 请登录后投票
   发表时间:2012-08-10  
这格式啊   看到脑壳大啊
0 请登录后投票
   发表时间:2012-09-04  
整理下代码格式,代码测试过没问题。
#include<stdio.h>
const int MaxSize=100; 
typedef struct SqList 
{ 
	char elem[MaxSize]; 
	int length; 
}SqList,*PSqList; 
SqList sq; 
void InitList(SqList &sq)           //初始化线性表 
{ 
	sq.length=0; 
} 
void CreateList(SqList &sq,char a[],int n)        //建立表 
{ 
	int i; 
	for(i=0;i<n;i++) 
		sq.elem[i]=a[i]; 
	sq.length=n; 
} 

int ListLength(SqList sq)          //求表长 
{ 
	return(sq.length); 
} 
char GetElem(SqList sq,int i)          //求第i个元素 
{ 
	if(i<1||i>sq.length) 
		return 0; 
	return sq.elem[i-1]; 
} 
int LocateElem(SqList sq,char x)       //按元素值查找 
{ 
	int i=0; 
	while(i<sq.length&&sq.elem[i]!=x) 
		i++; 
	if(i>sq.length) 
		return 0; 
	else return i+1; 
} 
int ListInsElem(SqList &sq,char x,int i)        //插入元素在第i个位置 
{ 
	int j; 
	if(i<1||i>sq.length+1)return 0; 
	for(j=sq.length;j>=i;j--) 
		sq.elem[j]=sq.elem[j-1]; 
	sq.elem[i-1]=x; 
	sq.length++; 
	return 1; 
} 
int DelElem(SqList &sq,int i,char &e)           //删除第i个元素 
{ 
	int j; 
	if (i<1||i>sq.length)return 0; 
	e=sq.elem[i]; 
	for(j=i;j<sq.length;j++) 
		sq.elem[j-1]=sq.elem[j]; 
	sq.length--; 
	return 1; 
} 
int ListEmpty(SqList &sq)             //判断表是否为空 
{ 
	return(sq.length==0); 
} 
void DispList(SqList sq)             //输出表 
{ 
	int i; 
	if(ListEmpty(sq))return; 
	for(i=0;i<sq.length;i++) 
		printf("%c\t",sq.elem[i]); 
} 
void main() 
{ 
	char a[5]={'a','b','c','d','e'}; 
	int n=5; 
	char f='f',b='a',e; 
	SqList sq; 

	InitList(sq);                  //初始化表 

	CreateList(sq,a,n);            //传入数据 

	DispList(sq);          //输出表 

	printf("sq.length=%d\n",ListLength(sq));        //输出表长 

	if(ListEmpty(sq))             //判断是否为空表 
		printf("sq是空表\n"); 
	else 
		printf("sq不是空表\n"); 

	printf("a在第%d位\n",LocateElem(sq,b));       //按元素值查找 

	ListInsElem(sq,f,4);       //在第4个位置上插入f元素 
	DispList(sq);           //输出表 
	printf("\n"); 
	DelElem(sq,3,e);              //删除第三个元素 
	DispList(sq);          //输出表 
} 


	
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics