• 顺序表


    seqlist.h


    <span style="font-size:24px;">#ifndef __SEQLIST_H__
    #define __SEQLIST_H__
    #include<stdio.h>
    #include<assert.h>
    #include<string.h>
    #define MAX_SIZE 1000
    typedef int DataType;
    typedef struct seqlist
    {
    	DataType array[MAX_SIZE];
    	size_t size;
    }seqlist;
    typedef enum tag
    {
    	one,//删去第一个
    	more,//所有都删去
    }Tag;
    void Init(seqlist* pSeq);
    void PushBack(seqlist* pSeq, DataType x);
    void PushFront(seqlist* pSeq, DataType x);
    void Print(seqlist* pSeq);
    void PopBack(seqlist* pSeq);
    void PopFront(seqlist*pSeqsssss);
    void Insert(seqlist* pSeq, size_t index, DataType x);
    void Modify(seqlist* pSeq, size_t index, DataType x);
    void removed(seqlist* pSeq, size_t index);
    void Erase(seqlist* pSeq, DataType x, Tag all);
    int Find(seqlist* pSeq, DataType x, size_t index);
    
     
    #endif		//__SEQLIST_H__</span>


    seqlist.c


    #include"seqlist.h"
    
    void Init(seqlist* pSeq)
    {
    	assert(pSeq);
    	memset(pSeq->array, 0, MAX_SIZE*sizeof(DataType));
    	pSeq->size = 0;/////////////size要初始化。否则是随机值会出现故障
    }
    void PushBack(seqlist* pSeq, DataType x)
    {
    	assert(pSeq);
    	assert(pSeq->size <= MAX_SIZE);
    	pSeq->array[pSeq->size++] = x;
    }
    void PushFront(seqlist* pSeq, DataType x)
    {
    	assert(pSeq);
    	assert(pSeq->size <= MAX_SIZE);
    	int i;
    	for (i = pSeq->size; i > 0; i--)
    	{
    		pSeq->array[i] = pSeq->array[i - 1];
    	}
    	pSeq->array[0] = x;
    	pSeq->size++;
    }
    void Insert(seqlist* pSeq, size_t index, DataType x)
    {
    	assert(pSeq);
    	assert(index < pSeq->size);
    	assert(pSeq->size < MAX_SIZE);
    	int i = pSeq->size - 1;
    	for (; i >= (int)index; i--)
    	{
    		pSeq->array[i + 1] = pSeq->array[i];
    	}
    	pSeq->array[index] = x;
    	pSeq->size++;
    }
    void Print(seqlist* pSeq)
    {
    	assert(pSeq);
    	size_t i = 0;
    	for (; i < pSeq->size; i++)
    	{
    		printf("%d ", pSeq->array[i]);
    	}
    	printf("
    ");
    }
    void PopBack(seqlist* pSeq)
    {
    	assert(pSeq);
    	pSeq->size--;
    }
    void PopFront(seqlist* pSeq)
    {
    	assert(pSeq);
    	size_t i;
    	for (i = 0; i < pSeq->size; i++)
    	{
    		pSeq->array[i] = pSeq->array[i + 1];
    	}
    	pSeq->size--;
    }
    void Modify(seqlist* pSeq, size_t index, DataType x)
    {
    	assert(pSeq);
    	assert(index < pSeq->size);
    	pSeq->array[index] = x;
    }
    void removed(seqlist* pSeq, size_t index)
    {
    	assert(pSeq);
    	assert(index < pSeq->size);
    	size_t i = index;
    	for (; i<pSeq->size-1 ; i++)
    	{
    		pSeq->array[i] = pSeq->array[i + 1];
    	}
    	pSeq->size--;
    }
    //返回的值为-1时,找不到此元素;否则返回的值为找到的元素的下标。
    int Find(seqlist* pSeq, DataType x, size_t index)
    {
    	assert(pSeq);
    	int i = index;
    	for (; i < (int)pSeq->size; i++)
    	{
    		if (pSeq->array[i] == x)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    void Erase(seqlist* pSeq, DataType x, Tag all)
    {
    	assert(pSeq);
    	int ret;
    	ret = Find(pSeq, x, 0);
    	if (ret == -1)
    	{
    		printf("顺序表中没有这个元素
    ");
    	}
    	else if (all == one)
    	{
    		removed(pSeq, ret);
    	}
    	else
    	{
    		for (; ret != -1;)
    		{
    			removed(pSeq, ret);
    			ret = Find(pSeq, x, ret);
    		}
    	}
    }
    
    void Test()
    {
    	seqlist s;
    	Init(&s);
    	PushBack(&s, 1);
    	PushBack(&s, 2);
    	PushBack(&s, 2);
    	PushBack(&s, 2);
    	PushBack(&s, 3);
    	PushBack(&s, 2);
    	PushBack(&s, 4);
    	PushBack(&s, 2);
    	Print(&s);
    	PopBack(&s);
    	Print(&s);
    	PushFront(&s, 5);
    	Print(&s);
    	PopFront(&s);
    	Print(&s);
    	Insert(&s, 0, 24);
    	Print(&s);
    	Modify(&s, 2, 90);
    	Print(&s);
    	removed(&s, 0);
    	Print(&s);
    	Erase(&s, 2, more);
    	Print(&s);
    }
    void main()
    {
    	Test();
    }



  • 相关阅读:
    PHP.TP框架下商品项目的优化2-图片优化
    PHP.TP框架下商品项目的优化1-时间插件、鼠标所在行高亮、布局规划页面
    PHP.26-TP框架商城应用实例-后台3-商品修改、删除
    PHP.25-TP框架商城应用实例-后台2-商品列表页-搜索、翻页、排序
    PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图
    PHP.23-ThinkPHP框架的三种模型实例化-(D()方法与M()方法的区别)
    PHP.22-Smart模版
    python爬取某站上海租房图片
    Python爬虫入门这一篇就够了
    按PEP8风格自动排版Python代码
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7141440.html
Copyright © 2020-2023  润新知