顺序线性表的实现及操作(C语言实现)
来源:互联网 发布:焊接仿真软件 编辑:程序博客网 时间:2024/06/05 09:06
什么是顺序线性表.....自己百度。
头文件
2_1.h#ifndef _2_1_H#define _2_1_H typedef void SeqList;typedef void SeqListNode;//创建线性表SeqList * SeqList_Create(int capacity);//销毁线性表void SeqList_DesTroy(SeqList * list);void SeqList_Clear(SeqList* list);int SeqList_Length(SeqList* list);int SeqList_Capacity(SeqList* list);int SeqList_Insert(SeqList* list, SeqListNode* node, int pos);SeqListNode* SeqList_Get(SeqList* list, int pos);SeqListNode* SeqList_Delete(SeqList* list, int pos);#endif
源文件:
// 顺序线性表.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <malloc.h>#include <stdlib.h>#include "2_1.h"typedef unsigned int TSeqListNode;typedef struct {int len; //长度int capacity;//总长度TSeqListNode * node;//每个节点的指针} TSeqList;int main(){ SeqList* list = SeqList_Create(5);//创建线性表 int i = 6;//赋值6个变量,已超过线性表最大值 5 int j = 1; int k = 2; int x = 3; int y = 4; int z = 5; int index = 0; SeqList_Insert(list, &i, 7);//将这6个变量插入线性表中 SeqList_Insert(list, &j, 0); SeqList_Insert(list, &k, 0); SeqList_Insert(list, &x, 0); SeqList_Insert(list, &y, 0); SeqList_Insert(list, &z, 0); //遍历 for(index=0; index<SeqList_Length(list); index++) { int* p = (int*)SeqList_Get(list, index); printf("%d ", *p); } printf("\n"); //删除操作 while( SeqList_Length(list) > 0 ) { int* p = (int*)SeqList_Delete(list, 0); printf("删除了: %d\n", *p); }SeqList_Clear(list); SeqList_DesTroy(list); system("pause");return 0;}//创建线性表SeqList * SeqList_Create(int capacity){TSeqList* ret = NULL ;if(capacity >= 0){ret = (TSeqList*)malloc(sizeof(TSeqList) + sizeof(TSeqListNode)*capacity); //为线性表分配空间,包含结//构体和节点的总大小}if(NULL != ret){ret->len = 0;ret->capacity = capacity;ret->node = (TSeqListNode*)(ret + 1);//将节点指向上述分配到的空间的后部分}return ret;}//销毁void SeqList_DesTroy(SeqList * list){free(list);}//清空void SeqList_Clear(SeqList* list){TSeqList * ret = (TSeqList*)list;if(NULL != ret){ret->len = 0;}}//获得线性表的长度int SeqList_Length(SeqList* list){TSeqList * ret = (TSeqList*)list;int len = -1;if(NULL != ret){len = ret->len;}return len;}//线性表的总长度int SeqList_Capacity(SeqList* list){TSeqList * ret = (TSeqList*)list;int capacity = -1;if(NULL != ret){ret->capacity = capacity;}return capacity;}//插入int SeqList_Insert(SeqList* list, SeqListNode* node, int pos){TSeqList * sList = (TSeqList*)list;int i,ret = -1;if((sList != NULL) &&(pos >= 0) && sList->capacity >= sList->len+1){if(pos >= sList->len){pos = sList->len;}for(i = sList->len; i > pos; i--){sList->node[i] = sList->node[i-1];}sList->node[i] = (TSeqListNode)node;++sList->len;ret = 1;}return ret;}//获得指定位置的节点SeqListNode* SeqList_Get(SeqList* list, int pos){TSeqList * sList = (TSeqList*)list;TSeqListNode* node = NULL;if(NULL != sList && pos>=0 && pos < sList->len){node = (TSeqListNode*)sList->node[pos];}return node;}//删除SeqListNode* SeqList_Delete(SeqList* list, int pos){TSeqList * sList = (TSeqList*)list;SeqListNode * node = SeqList_Get( list, pos);int i;if(sList != NULL && pos >= 0 && pos< sList->len){ for( i=pos+1; i<sList->len; i++) {sList->node[i-1] = sList->node[i]; } sList->len--;}return node;}
运行结果:
4 3 2 1 6删除了: 4删除了: 3删除了: 2删除了: 1删除了: 6请按任意键继续. . .
如有什么错误,望不吝告知。
0 0
- 顺序线性表的实现及操作(C语言实现)
- 顺序线性表的基本操作(C语言实现)
- 线性表的顺序表示及实现(C语言编写)
- 数据结构C语言实现线性表(顺序实现)的初始化与基本操作
- 线性表的顺序实现(C语言)
- 线性表的顺序实现(c语言)
- 线性表顺序实现(C语言)
- 线性表的顺序存储结构的常见操作(C语言代码实现)
- 线性表的顺序方式实现(c语言)
- 线性表的顺序存储结构(C语言实现)
- (四)线性表的顺序实现及相关操作
- C语言实现线性表之顺序存储结构操作
- 动态分配的顺序线性表的十五种操作—C语言实现
- C语言实现线性顺序链表
- 线性表的顺序存储结构的c语言实现
- C语言--线性表的顺序存储的实现
- 线性表的顺序存储实现及相关操作 C语言版
- 线性表的顺序存储实现及相关操作 C语言版
- List、Set和Map区别
- CF(437C)The Child and Toy(贪心)
- Unity3D 进度条
- ubuntu升级到11.04后,安装软件提示samba4错误的解决办法!
- 数据库迁移:文件系统迁至ASM
- 顺序线性表的实现及操作(C语言实现)
- 大于0的正则表达式
- 关于android环境的搭建。
- 黑马程序员-多线程死锁
- Unity3d OnApplicationPause与OnApplicationFocus
- 云计算领域的一些基本概念
- An implementation of the skip list data structure written in C++
- 写给准备参加秋招的学弟学妹们~一定要来看哦~
- db2通用数据库性能调整的常用方法