线性表的 赋值,插入,与元素的删除
来源:互联网 发布:07版excel编程入门教程 编辑:程序博客网 时间:2024/05/25 21:35
#include<stdio.h>
#define MAXSIZE 20
#define YES 0
#define NO 1
typedef int data_t;
typedef struct stu
{
data_t data[MAXSIZE];
int length;
}sq_list;
sq_list *CreateListSq()//申请内存空间
{
sq_list *sq=NULL;
if(NULL==(sq=(sq_list*)malloc(sizeof(sq_list))))
{
perror("create fail:");
exit(NO);
}
sq->length=0;
return sq;
}
int getele(sq_list *M,int i,data_t *n)//取出线性表中第i的一个元素
{
if(i>=M->length||i<0)
perror("get element fail:");
else
*n=M->data[i];
return YES;
}
/*在第i个位置插入一个元素*/
int eleinsert(sq_list *M,int i,data_t n)
{
if(i>M->length||i<0)//判断插入位置错误
{
perror("insert fail:");
exit (-1);
}
if(i==MAXSIZE)//判断线性表是否已满
{
printf("file full:");
exit(-1);
}
int k;
if(i<M->length)//插入位置正确,但不在线性表尾部
{
for(k=M->length-1;k>=i;k--)
{
M->data[k+1]=M->data[k];
}
}
M->data[i]=n;
M->length++;
return YES;
} /*删除第i个元素*/
int eledelete(sq_list *L,int i,int *dat)
{
if(i>=L->length||i<0)//删除位置不正确
{
perror("delete fail:");
exit(-1);
}
if(L->length==0)//线性表文件长度为空
{
perror("file is null:");
exit(-1);
}
int k;
if(i<L->length)//删除位置正确时
{
for(k=i;k<L->length;k++)
{
L->data[k]=L->data[k+1];
}
}
*dat=L->data[i];
L->length--;
return YES;
}
int print(sq_list *L)//打印整个线性表
{
int k;
int num;
if(L->length==0)
{
perror("***NULL***");
exit(-1);
}
for(k=0;k<L->length;k++)
{
getele(L,k,&num);
printf("%d\t",num);
}
printf("\n");
return YES;
}
int main(int argc, const char *argv[])
{
sq_list *sq;
sq=CreateListSq();
data_t i;
data_t k;
int tope;
for(i=0;i<5;i++)//对线性表赋值
{
sq->data[sq->length]=i;
sq->length++;
}
if(getele(sq,3,&k)==YES)
{
printf("%d\n",k);
}
print(sq);
eleinsert(sq,2,10);
print(sq);
eledelete(sq,2,&tope);
print(sq);
return 0;
}
#define MAXSIZE 20
#define YES 0
#define NO 1
typedef int data_t;
typedef struct stu
{
data_t data[MAXSIZE];
int length;
}sq_list;
sq_list *CreateListSq()//申请内存空间
{
sq_list *sq=NULL;
if(NULL==(sq=(sq_list*)malloc(sizeof(sq_list))))
{
perror("create fail:");
exit(NO);
}
sq->length=0;
return sq;
}
int getele(sq_list *M,int i,data_t *n)//取出线性表中第i的一个元素
{
if(i>=M->length||i<0)
perror("get element fail:");
else
*n=M->data[i];
return YES;
}
/*在第i个位置插入一个元素*/
int eleinsert(sq_list *M,int i,data_t n)
{
if(i>M->length||i<0)//判断插入位置错误
{
perror("insert fail:");
exit (-1);
}
if(i==MAXSIZE)//判断线性表是否已满
{
printf("file full:");
exit(-1);
}
int k;
if(i<M->length)//插入位置正确,但不在线性表尾部
{
for(k=M->length-1;k>=i;k--)
{
M->data[k+1]=M->data[k];
}
}
M->data[i]=n;
M->length++;
return YES;
} /*删除第i个元素*/
int eledelete(sq_list *L,int i,int *dat)
{
if(i>=L->length||i<0)//删除位置不正确
{
perror("delete fail:");
exit(-1);
}
if(L->length==0)//线性表文件长度为空
{
perror("file is null:");
exit(-1);
}
int k;
if(i<L->length)//删除位置正确时
{
for(k=i;k<L->length;k++)
{
L->data[k]=L->data[k+1];
}
}
*dat=L->data[i];
L->length--;
return YES;
}
int print(sq_list *L)//打印整个线性表
{
int k;
int num;
if(L->length==0)
{
perror("***NULL***");
exit(-1);
}
for(k=0;k<L->length;k++)
{
getele(L,k,&num);
printf("%d\t",num);
}
printf("\n");
return YES;
}
int main(int argc, const char *argv[])
{
sq_list *sq;
sq=CreateListSq();
data_t i;
data_t k;
int tope;
for(i=0;i<5;i++)//对线性表赋值
{
sq->data[sq->length]=i;
sq->length++;
}
if(getele(sq,3,&k)==YES)
{
printf("%d\n",k);
}
print(sq);
eleinsert(sq,2,10);
print(sq);
eledelete(sq,2,&tope);
print(sq);
return 0;
}
阅读全文
1 0
- 线性表的 赋值,插入,与元素的删除
- 链式线性表的插入与删除
- 线性链表的插入与删除
- 线性表的插入、查找与删除
- 线性链表的定义与元素插入、删除的操作实现
- 数据结构(线性表的操作:建立表,插入元素,删除元素,取元素,置空)
- 线性表的 插入 删除
- 线性表的插入删除
- 线性表的插入删除
- 线性表的链式存储的插入与删除操作
- 双向队列元素的插入与删除
- 双向队列元素的插入与删除
- 单链线性表的创建,元素的插入删除以及合并
- C语言:实现线性表基本表示(数组元素的删除,插入,合并)
- 线性表的插入和删除
- 线性表的插入,删除,合并,查找
- 线性表 初始化 插入 删除 的操作
- 线性表的插入删除(java实现)
- MarkDown学习之一:关键语义
- java 用户自定义类 Employee类
- 知识储备:03链表:链表之哑节点的使用
- [SDUT](2125)数据结构实验之串二:字符串匹配 ---字符串匹配(串)
- HDU
- 线性表的 赋值,插入,与元素的删除
- Linux下的进度条程序
- HDMI信号解析
- python----模块(库)初识(一)
- Android View的layout_width属性是如何解析的
- POJ
- JavaScript中最大值最小值问题
- 上下界网络流
- 世界是不公平的,唯有感受是私有