顺序表
结构体:
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(数据结构、计算机组成原理、计算机网络、操作系统),想着把数据结构的代码重新敲一遍,加深印象。