C线性表
来源:互联网 发布:淘宝怎么弄 编辑:程序博客网 时间:2024/05/22 00:36
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem; //存储机制
int length; //当前线性表的长度
int listsize; //当前分配的存储容量
}Sqlist;
Status Init_List(Sqlist *L)
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) return -2;
L->length=0;
L->listsize=LIST_INIT_SIZE;
printf("初始化成功\n");
return 1;
}
Status List_Insert(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length+1)
return -1;
if(L->length>=L->listsize)
{
ElemType *newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) return -1;
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
ElemType *q=&(L->elem[i-1]);
ElemType *p=&(L->elem[L->length-1]);
for(;p>=q;--p) *(p+1)=*p;
*q=e;
++L->length;
printf("插入成功!\n");
return 1;
}
Status List_Delete(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length)
return -1;
ElemType *q=&(L->elem[i-1]);
e=*q;
ElemType *p=&(L->elem[L->length-1]);
for(++q;p>=q;--p) *(p-1)=*p;
--L->length;
printf("删除成功!\n");
return 1;
}
void Print(Sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
printf("%d\n",L->elem[i]);
}
int main()
{
Sqlist L;
ElemType e;
Init_List(&L);
int i;
for(i=1;i<10;i++)
{
List_Insert(&L,1,i);
}
Print(&L);
List_Delete(&L,1,e);
return 0;
}
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 4
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem; //存储机制
int length; //当前线性表的长度
int listsize; //当前分配的存储容量
}Sqlist;
Status Init_List(Sqlist *L)
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) return -2;
L->length=0;
L->listsize=LIST_INIT_SIZE;
printf("初始化成功\n");
return 1;
}
Status List_Insert(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length+1)
return -1;
if(L->length>=L->listsize)
{
ElemType *newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) return -1;
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
ElemType *q=&(L->elem[i-1]);
ElemType *p=&(L->elem[L->length-1]);
for(;p>=q;--p) *(p+1)=*p;
*q=e;
++L->length;
printf("插入成功!\n");
return 1;
}
Status List_Delete(Sqlist *L,int i,ElemType e)
{
if(i<1||i>L->length)
return -1;
ElemType *q=&(L->elem[i-1]);
e=*q;
ElemType *p=&(L->elem[L->length-1]);
for(++q;p>=q;--p) *(p-1)=*p;
--L->length;
printf("删除成功!\n");
return 1;
}
void Print(Sqlist *L)
{
int i;
for(i=0;i<L->length;i++)
printf("%d\n",L->elem[i]);
}
int main()
{
Sqlist L;
ElemType e;
Init_List(&L);
int i;
for(i=1;i<10;i++)
{
List_Insert(&L,1,i);
}
Print(&L);
List_Delete(&L,1,e);
return 0;
}
阅读全文
0 0
- 线性表(C++)
- 数据结构-线性表 (C++)
- Objective-C 线性表
- 数据结构线性表c
- 线性顺序表C
- 线性链表C
- 线性表--单链表(C++)
- C - 数据结构 - 线性表
- C线性表
- 线性表 C
- 线性表(C++)
- 线性表(C++)
- C构造线性表
- C语言-线性表
- c 线性链表程序
- C语言实现线性表
- c语言线性表详解
- 线性表 C语言实现
- mysql索引类型及优缺点
- python 统计list中各个元素出现的次数
- js实现动画的方法
- ACM周末总结—9月10日
- 【jvm】垃圾回收器以及垃圾回收算法
- C线性表
- 谷歌开源 tf-seq2seq,你也能用谷歌翻译的框架训练模型
- LeetCode 200. Number of Islands
- 20170910算法工程师在线笔试
- JavaScript快速排序
- 最少转机
- redis与memcache的区别
- iOS【iOS开发员的代码规范】
- Logistic回归 学习