线性结构之顺序表(c语言)

顺序表

结构体:

typedef struct LNode *List;
struct LNode{
	int Data[MAXSIZE];
	int Last;
}L,*PtrL;

置空:

List MakeEmpty()
{
	List PtrL;
	PtrL = (List)malloc(sizeof(struct LNode));
	PtrL->Last = -1;
	return PtrL;
}

查找(按值查找)

int Find(int X,List PtrL)
{
	int i =0;
	while( i<=PtrL->Last&&PtrL->Data[i]!=X)
	i++;
	if(i>PtrL->Last)return -1;
	else return i;
}

插入:

 void InSert(int x,int i,List PtrL)
 {
 	int j;
 	if(PtrL->Last == MAXSIZE-1){
 		printf( "表满");
 		return;
	 }
	 if(i<1||i>PtrL->Last+2){
	 	printf( "位置不合法");
	 	return;
	 }
	 for( j = PtrL->Last;j>=i-1;j--)
	 PtrL->Data[j+1] = PtrL->Data[j]; 
	 PtrL->Data[i-1] = x;
	 PtrL->Last++;
	 return;
  } 

删除:

  void Delete( int i,List PtrL )
  {
  	int j;
  	if(i<1||i>PtrL->Last+1){
  		printf("不存在的第%d个元素",i);
  		return;
	  }
	  for( j=i;j<=PtrL->Last;j++)
	  PtrL->Data[j-1] = PtrL->Data[j];
	  return;
  }

添加:

  void Add(int x,List PtrL) 
  {
  	int j = PtrL->Last;
  	if( j==MAXSIZE-1){
  		printf("表满"); 
  		return;
	  }
	  PtrL->Data[j+1]=x;
	  PtrL->Last++;
  }

完整代码:

#include<stdio.h>
#define MAXSIZE 100 
typedef struct LNode *List;
struct LNode{
	int Data[MAXSIZE];
	int Last;
}L,*PtrL;
// 置空 
List MakeEmpty()
{
	List PtrL;
	PtrL = (List)malloc(sizeof(struct LNode));
	PtrL->Last = -1;
	return PtrL;
}
//查找 
int Find(int X,List PtrL)
{
	int i =0;
	while( i<=PtrL->Last&&PtrL->Data[i]!=X)
	i++;
	if(i>PtrL->Last)return -1;
	else return i;
}
//插入
 void InSert(int x,int i,List PtrL)
 {
 	int j;
 	if(PtrL->Last == MAXSIZE-1){
 		printf( "表满");
 		return;
	 }
	 if(i<1||i>PtrL->Last+2){
	 	printf( "位置不合法");
	 	return;
	 }
	 for( j = PtrL->Last;j>=i-1;j--)
	 PtrL->Data[j+1] = PtrL->Data[j]; 
	 PtrL->Data[i-1] = x;
	 PtrL->Last++;
	 return;
  } 
  void Delete( int i,List PtrL )
  {
  	int j;
  	if(i<1||i>PtrL->Last+1){
  		printf("不存在的第%d个元素",i);
  		return;
	  }
	  for( j=i;j<=PtrL->Last;j++)
	  PtrL->Data[j-1] = PtrL->Data[j];
	  
  }
  //添加 
    void Add(int x,List PtrL) 
  {
  	int j = PtrL->Last;
  	if( j==MAXSIZE-1){
  		printf("表满"); 
  		return;
	  }
	  PtrL->Data[j+1]=x;
	  PtrL->Last++;
  }
int main()
{
	List PtrL = MakeEmpty();
	Add(1,PtrL); 
	Add(2,PtrL); 
	Add(3,PtrL); 
	printf("%d\n",Find(3,PtrL));
	return 0;
}

刚考完研,学了408(数据结构、计算机组成原理、计算机网络、操作系统),想着把数据结构的代码重新敲一遍,加深印象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值