C语言实现静态顺序表的实例详解
发布时间:2020-12-26 10:35:52  所属栏目:经验  来源:网络整理 
            导读:C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。 接下来看看静态的顺序表,直接上代码: SeqL
                
                
                
            | 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];
 /                         | 


