C语言实现静态顺序表的实例详解
发布时间:2020-12-25 18:00:16 所属栏目:经验 来源:网络整理
导读:C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。 接下来看看静态的顺序表,直接上代码: SeqLis
|
C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。 接下来看看静态的顺序表,直接上代码: SeqList.h
#define _CRT_SECURE_NO_WARNINGS 1
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define MAX 10
typedef int DataType;
typedef struct SeqList
{
DataType data[MAX];
int sz;
}SeqList,*pSeqList;
void InitSeqList(pSeqList ps);
void PushBack(pSeqList ps,DataType d);
void PopBack(pSeqList ps);
void PushFront(pSeqList ps,DataType d);
void PopFront(pSeqList ps);
void Display(const pSeqList ps);
int Find(pSeqList ps,DataType d);
void Insert(pSeqList ps,DataType d,int pos);
void Remove(pSeqList ps,DataType d);
void RemoveAll(pSeqList ps,DataType d);
void Reverse(pSeqList ps);
void Sort(pSeqList ps);
int BinarySearch(pSeqList ps,DataType d);
#endif//__SEQLIST_H__
SeqList.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"
void InitSeqList(pSeqList ps)
{
assert(ps);
ps->sz = 0;
memset(ps->data,sizeof(DataType)*MAX);
}
void PushBack(pSeqList ps,DataType d)
{
assert(ps);
if (ps->sz == MAX)
{
return;
}
ps->data[ps->sz] = d;
ps->sz++;
}
void PopBack(pSeqList ps)
{
assert(ps);
if (ps->sz == 0)
{
return;
}
ps->sz--;
}
void PushFront(pSeqList ps,DataType d)
{
int i = 0;
assert(ps);
for (i = ps->sz; i >= 1; i--)
{
ps->data[i] = ps->data[i - 1];
}
ps->data[0] = d;
ps->sz++;
}
void PopFront(pSeqList ps)
{
int i = 0;
assert(ps);
for (i = 0; i < ps->sz; i++)
{
ps->data[i] = ps->data[i + 1];
}
ps->sz--;
}
void Display(const pSeqList ps)
{
int i = 0;
assert(ps);
for (i = 0; i < ps->sz; i++)
{
printf("%d ",ps->data[i]);
}
printf("n");
}
int Find(pSeqList ps,DataType d)
{
int i = 0;
assert(ps);
for (i = 0; i < ps->sz; i++)
{
if (ps->data[i] == d)
{
return i;
}
}
return -1;
}
void Insert(pSeqList ps,int pos)
{
int i = 0;
assert(ps);
if (ps->sz == MAX)
{
return;
}
//方式一
//for (i = ps->sz - 1; i >= pos; i--)
//{
// ps->data[i + 1] = ps->data[i];
/ |
站长推荐
热点阅读


