数据结构中静态顺序表的初始化、尾插、尾删、头插、头删、任意位置的插入及删除

(1)test.h中的代码

#ifndef _TEST_H_

#define _TEST_H_

#define MAX_SIZE 10
typedef int datetype;

typedef struct seqlist
{
datetype arr[MAX_SIZE];
int size;
}seqlist,*pseqlist;

void initseqlist(pseqlist pseq);    //初始化顺序表
void pushback(pseqlist pseq, datetype date);   //尾插法插入元素
void print(pseqlist pseq);    //打印顺序表
void popback(pseqlist pseq);   //尾删法删除元素
int empty(pseqlist pseq);       //顺序表是否为空
void pushfront(pseqlist pseq, datetype date);  //头插法插入元素
void popfront(pseqlist pseq);   //头删法删除元素
void insert(pseqlist pseq, int pos, datetype date);    //任意位置插入元素
void erase(pseqlist pseq, int pos);    //任意位置删除元素
void panman(pseqlist pseq);     //如果表满,输出提示信息
void pankong(pseqlist pseq);    //如果表空,输出提示信息

#endif


2)test.c中的代码


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<assert.h>
#include"test.h"

int empty(pseqlist pseq)
{
if (pseq->size == 0)
{
return -1;
}
return 1;
}


void panman(pseqlist pseq)
{
assert(pseq);
if (pseq->size >= MAX_SIZE)
{
printf("顺序表已满\n");
return;
}
}

void pankong(pseqlist pseq)
{
assert(pseq);
if (empty(pseq) == -1)
{
printf("此顺序表为空\n");
return;
}
}


void initseqlist(pseqlist pseq)
{
assert(pseq);
pseq->size = 0;
}


void pushback(pseqlist pseq, datetype date)
{

panman(pseq);
    pseq->arr[pseq->size++] = date;
}


void print(pseqlist pseq)
{
assert(pseq);
for (int i = 0; i < pseq->size; ++i)
{
printf("%d ", pseq->arr[i]);
}
printf("\n");
}


void popback(pseqlist pseq)
{
pankong(pseq);
pseq->size--;
}


void pushfront(pseqlist pseq, datetype date)
{
panman(pseq);
for (int i = pseq->size; i >0; --i)
{
pseq->arr[i] = pseq->arr[i-1];
}
pseq->arr[0] = date;
pseq->size++;
}


void popfront(pseqlist pseq)
{
pankong(pseq);
for (int i = 1; i < pseq->size; ++i)
{
pseq->arr[i-1] = pseq->arr[i];
}
pseq->size--;
}


void insert(pseqlist pseq, int pos, datetype date)
{
panman(pseq);
for (int i = pseq->size; i > pos; --i)
{
pseq->arr[i] = pseq->arr[i - 1];
}
pseq->arr[pos] = date;
pseq->size++;
}


void erase(pseqlist pseq, int pos)
{
pankong(pseq);
for (int i = pos + 1; i < pseq->size; ++i)
{
pseq->arr[i-1] = pseq->arr[i];
}
pseq->size--;


}


(3)shunxubiao.c的代码


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include"test.h"

int main()
{
seqlist s;
pseqlist pseq = &s;
initseqlist(pseq);
pushback(pseq, 1);
pushback(pseq, 2);
pushback(pseq, 3);
pushback(pseq, 5);
pushback(pseq, 6);
print(pseq);
popback(pseq);
print(pseq);
pushfront(pseq, 0);
print(pseq);
popfront(pseq);
print(pseq);
insert(pseq, 3, 4);
print(pseq);
erase(pseq, 3);
print(pseq);
system("pause");
return 0;
}

      测试时可在shunxubiao.c中分为顺序表为空时、顺序表满时,任意位置插入及删除要测试头元素、尾元素,及中间元素,希望对大家有所帮助!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值