此博文记录了一些学习笔记,可能有错误的地方,欢迎大家指出,和大家一起学习。
线性表是一种最简单的线性结构。线性表的主要操作特点是可以在任意位置插入和删除一个数据元素。
如下是C语言对顺序表的操作和实现。
SeqList.h
//结构体
typedef struct
{
DataType list[MaxSize];
int size;
}SeqList;
//初始化
void ListInitiate(SeqList *L)
{
L->size=0;
}
//获取个数
int ListLength(SeqList L)
{
return L.size;
}
//插入数据元素
int ListInsert(SeqList *L,int i,DataType x)
{
int j;
if(L->size>=MaxSize)
{
printf("参数i不合法!\n");
return 0;
}
else if(i<0||i>L->size)
{
printf("参数i不合法!\n");
return 0;
}
else
{
for(j=L->size;j>i;j--)
L->list[j]=L->list[j-1];
L->list[i]=x;
L->size++;
return 1;
}
}
//删除数据
int ListDelete(SeqList *L,int i, DataType *x)
{
int j;
if(L->size>=MaxSize)
{
printf("参数i不合法!\n");
return 0;
}
else if(i<0||i>L->size-1)
{
printf("参数i不合法!\n");
return 0;
}
else
{
*x=L->list[i];
for(j=i+1;j<=L->size-1;j++)
L->list[j-1]=L->list[j];
L->size--;
return 1;
}
}
//取数据
int ListGet(SeqList L,int i,DataType *x)
{
if(i<0||i>L.size-1)
{
printf("参数i不合法!\n");
return 0;
}
else
{
*x=L.list[i];
return 1;
}
}
实现,例一
demo.cpp#include <stdio.h>
/**
程序设计语言要求所有标识符(包括数据类型和变量等)要先定义后使用,
所以主函数前的语句次序必须如下:
**/
#define MaxSize 100
typedef int DataType;
#include "SeqList.h"
void main(void)
{
SeqList myList;
int i,x;
ListInitiate(&myList); //初始化
for(i=0;i<10;i++)
ListInsert(&myList,i,i+1); //插入10个元素
ListDelete(&myList,4,&x); //删除一个元素
//打印出所有的元素
for(i=0;i<ListLength(myList);i++)
{
ListGet(myList,i,&x);
printf("%d ",x);
}
}
实例,例二
#include <stdio.h>
#define MaxSize 100
typedef struct Student
{
long number;
char name[10];
char sex[3];
int age;
}StudentType;
typedef StudentType DataType;
#include "SeqList.h"
void main(void)
{
SeqList myList;
int i;
StudentType x[3]={
{20001,"张三","男",20},
{20002,"小花","女",22},
{20003,"李四","男",24}
};
StudentType s;
ListInitiate(&myList);
ListInsert(&myList,0,x[0]);
ListInsert(&myList,1,x[1]);
ListInsert(&myList,2,x[2]);
for(i=0;i<ListLength(myList);i++)
{
ListGet(myList,i,&s);
printf("%d %s %s %d\n",s.number,s.name,s.sex,s.age);
}
}