資料結構-順序表的實現以及一些功能(c語言版本)
阿新 • • 發佈:2018-12-20
#define MAXSIZE 100 //MAXSIZE為線性表可能的最大長度
#include<stdio.h>
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length; // length為線性表的長度
}SqList; //線性表定義
tydef 為自定義結構體
void InitList(SqList *L) //初始化操作,將線性表L置空
{
L->length=0;
}
定義SeqList形式的指標變數指向 length,length代表最後一個元素的下標
int IsEmpty(SqList *L) //判斷表是否為空,如L是空表,返回1,否則返回0
{
if(L)
{
L->length==0;
return 1;
}
else
return 0;
}
int LocateElem(SqList *L,ElemType x)//定位函式,返回L中第1個與x相等的資料元素的位置(從0算起),否則返回值為0
{
int i=0;
for(;i<=L->length;i++)
if(L->data[i]=x)
return i;
return -1;
}
int GetElem(SqList L,int i) //取表中第i元素 { printf("%d\n",L.data[i]); }
int Insert(SqList *L,ElemType x,int i)//線上性表L中第i個數據元素之前插入一個數據元素x
{
int k;
if(i<0||i>L->length||L->length+1==MAXSIZE)
return 0;
else
{
for(k=L->length;k>=i;k--)
L->data[k]=L->data[k-1];
L->data[i]=x;
L->length=L->length+1;
}
return 1;
}
int Delete(SqList *L, int i) //刪除線性表L中第i個數據元素 { int k; if(i>L->length) return 0; else { for(k=i;k<=L->length-1;k++) L->data[k]=L->data[k+1]; L->length--; } return 1; }
void MergeList(SqList La,SqList Lb,SqList *Lc)//合併有序表La和Lb到表Lc中,使得表Lc依然有序
{
int i,j,k;
i=0,j=0,k=0;
while(i<=La.length&&j<=Lb.length)
if(La.data[i]<Lb.data[j])
{
Lc->data[k]=La.data[i];
k++;
i++;
}
else{
Lc->data[k]=Lb.data[j];
k++;
j++;
}
while(i<=La.length){
Lc->data[k]=La.data[i];
k++;
i++;
}
while(j<=Lb.length){
Lc->data[k]=Lb.data[j];
k++;
j++;
}
Lc->length=k-1;
}