【数据结构】顺序表seqlist

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct seqlistNode
{
	 int date;
}seqlistNode;

typedef struct SEQLIST
{
	unsigned int lengh;   //长度
	unsigned int count;    //已存元素长度
	seqlistNode * date;   //数据域

}seqlist;

seqlist * Creatlist(int count)
{
	seqlist * s=NULL;
	if(count==0)
		return NULL;
	s=(seqlist *)malloc(sizeof(seqlist)+count*sizeof(seqlistNode));  //动态开辟内存
	memset(s,0,sizeof(seqlist)+count*sizeof(seqlistNode));       //自己管理
	s->date=(seqlistNode *)(s+1);
	s->lengh=0;
	s->count=count;
	return s;
}

int insertList(seqlist *s,seqlistNode n,unsigned pos)
{
	unsigned i;
	if(s==NULL) return -1;
	if(pos > (s->count-1) )return -2;
	if(s->lengh==s->count) return -3;
	if(pos > s->lengh) pos=s->lengh;
	for(i=s->lengh;i!=pos;i--)
		s->date[i].date=s->date[i-1].date;
	s->date[pos].date=n.date;
	s->lengh+=1;
	return 0;
}

int dellist(seqlist *s,unsigned pos)
{
	unsigned int i;
	if(s==NULL) return -1;
	if(pos>s->lengh) return -2;
	for(i=pos;i<s->lengh-1;i++)
		s->date[i]=s->date[i+1];
	s->lengh--;
	return 0;
}

void destroylist(seqlist* list)
{
	if(list!=NULL)
		free(list);
}

void display(seqlist *s)
{
	unsigned i;
	for(i=0;i<s->lengh;i++)
	{
		printf("%d ",s->date[i].date);
	}
	printf("\n");
}

int main()
{
	seqlist *list=NULL;
	unsigned i=0;
	list=Creatlist(10);
	for(i;i<list->count;i++)
	{
		seqlistNode n;
		n.date=i;
		insertList(list,n,0);
	}
	display(list);

	for(i=0;i<list->count;i++)
	{
		dellist(list,0);
		display(list);
	}
	destroylist(list);
	return 0;
}

运行结果:

时间: 2024-08-10 19:17:47

【数据结构】顺序表seqlist的相关文章

数据结构C#版笔记--顺序表(SeqList)

线性结构(Linear Stucture)是数据结构(Data Structure)中最基本的结构,其特征用图形表示如下: 即:每个元素前面有且只有一个元素(称为"前驱"),同样后面有且只有一个元素(称为"后继")--注:起始元素的前驱认为是空,末尾元素的后继认为也是空,这样在概念上就不冲突了. 线性表(List)是线性结构的一种典型实现,它又可以分为:顺序表(SeqList)和链表(LinkList)二大类. 顺序表(SeqList)的基本特征为:元素在内部存储时

hrbust-1545-基础数据结构——顺序表(2)

http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 412(165 users) Total Accepted: 188(150 users) Rating:  Special Judge: No Description 在长度为n(n<10

数据结构----顺序表与单链表(JAVA)

下面为学习顺序表和单链表的一些基本操作函数: 1 public class SeqList<T> extends Object { 2 protected int n; 3 protected Object[] element; 4 5 public SeqList(int length) { 6 this.element = new Object[length]; 7 this.n = 0; 8 } 9 10 public SeqList() { 11 this(64); 12 } 13 1

数据结构-------顺序表的实现

2016.1-14 顺序表的实现 .h文件 #pragma once #include<stdio.h> #include<string.h> #include<assert.h> #define MAX_SIZE 1000//预定义顺序表为1000 typedef int DataType;//控制以后数据类型 typedef struct SeqList//定义一个结构体 { DataType array[MAX_SIZE];//定义一个数组 size_t size

C++数据结构 顺序表的实现(模板类的实现)

利用模板类实现顺序表的操作 实现的功能: 1.尾插,2.头插,3.显示,4.尾删,5.头删,6.按位置,7.插按值插,8.按位置删,9.按值删,10.按值查,11.求表长,12.清除数据,13.摧毁该顺序表,14.反转,15.排序(冒泡排序,快速排序). 头文件源代码: #pragma once // 防止重复编译 #include<iostream> using namespace std; template<class Type> class SeqList { public:

数据结构—顺序表的实现

线性表的顺序存储又称为顺序表.它是用一组地址连续的存储单元,依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻.第1个元素存储在线性表的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素.因此,顺序表的特点是表中元素的逻辑顺序与其物理顺序相同. 所以在这里我们实现一下顺序表! seqlist.h #define _CRT_SECURE_NO_WARNINGS 1 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #defi

数据结构-顺序表插入元素时扩容问题

本程序是双倍扩容 顺序表类定义: 1 template<class T> 2 class SeqList :public Linearlist<T> 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool Insert(int i, T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 16 temp

数据结构顺序表删除所有特定元素x

顺序表类定义: 1 template<class T> 2 class SeqList : 3 { 4 public: 5 SeqList(int mSize); 6 ~SeqList() 7 { 8 delete[] elements; 9 } 10 bool SM_Delete(T x); 11 private: 12 int maxLength; 13 T *elements; 14 }; 15 template <class T> 16 SeqList<T>::

算法数据结构 顺序表的实现+操作 及对产生问题的分析

线性表的顺序存储是将线性表中的元素存放在一组连续的存储单元中.使得在线性表中逻辑上相邻的元素在物理存储单元上也是连续的.采用顺序存储的线性表叫做顺序表. 线性表的顺序存储结构如下: 模块化设计: 头文件 结构体和相应函数的定义,声明 #ifndef _SEQLIST_H #define _SEQLIST_H #include<iostream> #include<assert.h>//断言 #include<string.h> #include<stdlib.h&

数据结构顺序表思想以及完整代码实现

本文转载自趣学算法,方便个人学习参考使用 http://blog.csdn.net/rainchxy/article/details/77946835 数据结构 第3讲 顺序表 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入.删除时需要移动大量元素. 顺序表可以分配一段连续的存储空间Maxsize,用elem记录基地址,用length记录实际的元素个数,即顺序表的长度, 结构体的定义: 结构体定义后,如果要定义个顺序