加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

C语言实现静态顺序表的实例详解

发布时间:2020-12-26 10:05:46 所属栏目:创业 来源:网络整理
导读: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];
 /                        

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读