数据结构之线性表
一、顺序表
1、头文件
#ifndef LINEHEAD_H_INCLUDED
#define LINEHEAD_H_INCLUDED
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 20
typedef struct
{
int data[Maxsize];
int length;
}SqList;
void InitList(SqList &L);
void PrintSqList(SqList &L);
#define InitSize 10
typedef struct
{
int *data;
int maxsize,length;
}SeqList;
void InitSeqList(SeqList& L);
void InitData(SeqList &L);
void IncreaseSize(SeqList& L,int len);
void PrintSeqList(SeqList &L);
#endif
2、静态线性表
#include"LineHead.h"
void InitList(SqList &L)
{
for(int i=0;i<Maxsize;i++)
{
L.data[i]=0;
}
L.length=0;
}
void PrintSqList(SqList &L)
{
for(int i=0;i<Maxsize;i++)
{
printf("%d\t",L.data[i]);
}
}
4、动态线性表
#include"LineHead.h"
void InitSeqList(SeqList &L)
{
L.data=(int*)malloc(InitSize * sizeof(int));
L.length=0;
L.maxsize=InitSize;
InitData(L);
}
void InitData(SeqList &L)
{
for(int i=0;i<L.maxsize;i++)
{
L.data[i]=0;
}
L.length=0;
}
void IncreaseSize(SeqList &L,int len)
{
int *P = L.data;
L.data = (int*)malloc((L.maxsize+len)*sizeof(int));
for(int i=0;i<L.length;i++)
{
L.data[i]=P[i];
}
L.maxsize=L.maxsize+len;
free(P);
InitData(L);
}
void PrintSeqList(SeqList &L)
{
for(int i=0;i<L.maxsize;i++)
{
printf("%d\t",L.data[i]);
}
}
5、main方法
#include"LineHead.h"
int main()
{
SqList L;
printf("未初始化的静态线性表:\n");
PrintSqList(L);
InitList(L);
printf("\n初始化的静态线性表:\n");
PrintSqList(L);
SeqList L1;
printf("\n\n初始化的动态线性表:\n");
InitSeqList(L1);
PrintSeqList(L1);
printf("\n\n动态增加的动态线性表:\n");
IncreaseSize(L1,5);
PrintSeqList(L1);
return 0;
}