线性表的实现及操作
来源:互联网 发布:关系数据库教程 编辑:程序博客网 时间:2024/06/05 16:01
线性表的功能:
建立顺序表,打印顺序表,插入指定位置数据,删除指定位置数据,查找数据,清空顺序表只需将表长设为0即可。
#include"stdio.h"
#include<malloc.h>
# define n 1024//自定义存储空间的大小
typedef struct
{ int a[n]; //数组存储线性数据
int length; //数组长度
}list;
//建立线性表
void creatlist(list * l){
int i,j,k;
printf("请输入数据的个数:\n");
scanf("%d",&j);
for(i=0;i<j;i++){
printf("a[%d]=",i);
scanf("%d",&k);
l->a[i]=k;
}
l->length=j;
}
//打印线性表
void print(list *l){
int i;
for(i=0;i<l->length;i++){
printf("%d\n",l->a[i]);
}
}
//插入数据
int insert(list *l ,int i,int date){
int j;
if(l->length==n){
printf("线性表满");
return 0;}
if(i<1||i>l->length){
printf("i的位置不对");
return 0;
}
else{
for( j=l->length;j>=i;j--)//i后面元素都往后移动一位,先移动最后的元素
{
l->a[j]=l->a[j-1];
}
l->a[i-1]=date;
l->length++;
}
return 1;
}
//删除元素
int delet(list *l,int i){
int j;
if((i<1) || (i>l->length))
{ printf("删除位置错误,输入正确删除位置:\n");
return 0;
}
else{
for( j=i;j<l->length;j++)/*i后面的每个元素都往前移动 一位*/
{
l->a[j-1]=l->a[j];
}
l->length--;
}
return 1;
}
//查找元素
int chazhao(list *l, int date){
int i;
if(l->length==0)
{printf("顺序表是空的");
return 0;
}
else{
for( i=0;i<l->length;i++){
if(l->a[i]==date)
return i+1;
}
}
}
int main(){
list * l;
char c;
int e;
int ii,ch;
l=(list *)malloc(sizeof(list));//指针使用前要初始化
creatlist(l);
print(l);
do{
printf("i ***插入\n");
printf("d ***删除\n");
printf("k ***查找\n");
printf("q ***退出\n");
printf("请选择:\n");
do{
fflush(stdin);//清除键盘缓冲区,该函数要写,否则可能会引起无法输入字符c
scanf("%c",&c);
}while((c!='i')&&(c!='d')&&(c!='q')&&(c!='k'));
switch(c){
case 'i':
printf("输入插入的数据:");
scanf("%d",&e);
printf("输入要插入的位置:");
scanf("%d",&ii);
insert(l,ii,e);
print(l);
break;
case'd':
printf("请输入删除的位置:");
scanf("%d",&ii);
if(delet(l,ii))
print(l);
break;
case'k':
printf("请输入查找的数据:");
scanf("%d",&ch);
printf("数据的位置是:%d\n",chazhao(l,ch));
break;
}
}while(c!='q');
}
#include<malloc.h>
# define n 1024//自定义存储空间的大小
typedef struct
{ int a[n]; //数组存储线性数据
int length; //数组长度
}list;
//建立线性表
void creatlist(list * l){
int i,j,k;
printf("请输入数据的个数:\n");
scanf("%d",&j);
for(i=0;i<j;i++){
printf("a[%d]=",i);
scanf("%d",&k);
l->a[i]=k;
}
l->length=j;
}
//打印线性表
void print(list *l){
int i;
for(i=0;i<l->length;i++){
printf("%d\n",l->a[i]);
}
}
//插入数据
int insert(list *l ,int i,int date){
int j;
if(l->length==n){
printf("线性表满");
return 0;}
if(i<1||i>l->length){
printf("i的位置不对");
return 0;
}
else{
for( j=l->length;j>=i;j--)//i后面元素都往后移动一位,先移动最后的元素
{
l->a[j]=l->a[j-1];
}
l->a[i-1]=date;
l->length++;
}
return 1;
}
//删除元素
int delet(list *l,int i){
int j;
if((i<1) || (i>l->length))
{ printf("删除位置错误,输入正确删除位置:\n");
return 0;
}
else{
for( j=i;j<l->length;j++)/*i后面的每个元素都往前移动 一位*/
{
l->a[j-1]=l->a[j];
}
l->length--;
}
return 1;
}
//查找元素
int chazhao(list *l, int date){
int i;
if(l->length==0)
{printf("顺序表是空的");
return 0;
}
else{
for( i=0;i<l->length;i++){
if(l->a[i]==date)
return i+1;
}
}
}
int main(){
list * l;
char c;
int e;
int ii,ch;
l=(list *)malloc(sizeof(list));//指针使用前要初始化
creatlist(l);
print(l);
do{
printf("i ***插入\n");
printf("d ***删除\n");
printf("k ***查找\n");
printf("q ***退出\n");
printf("请选择:\n");
do{
fflush(stdin);//清除键盘缓冲区,该函数要写,否则可能会引起无法输入字符c
scanf("%c",&c);
}while((c!='i')&&(c!='d')&&(c!='q')&&(c!='k'));
switch(c){
case 'i':
printf("输入插入的数据:");
scanf("%d",&e);
printf("输入要插入的位置:");
scanf("%d",&ii);
insert(l,ii,e);
print(l);
break;
case'd':
printf("请输入删除的位置:");
scanf("%d",&ii);
if(delet(l,ii))
print(l);
break;
case'k':
printf("请输入查找的数据:");
scanf("%d",&ch);
printf("数据的位置是:%d\n",chazhao(l,ch));
break;
}
}while(c!='q');
}
阅读全文
0 0
- 线性表的实现及操作
- 线性表的顺序存储及操作实现
- (四)线性表的顺序实现及相关操作
- 有序线性表的基本操作及实现
- 【线性表】顺序存储、链式存储的实现及操作
- 线性表的顺序存储及操作实现
- 实验一、线性表的基本操作及实现
- 线性表的线性存储及基本操作
- 线性表的基本操作及应用
- (一)线性表的链式实现及相关操作实现
- 顺序线性表的实现及操作(C语言实现)
- C++实现线性表的操作
- 线性链表的实现和操作
- 线性hash表的实现和操作
- 线性表的各种操作实现
- 线性表各种操作的实现
- 线性表的基本操作和实现
- 线性表的基本实现与操作
- code forces E. Danil and a Part-time Job
- Java并发编程札记-目录
- [leetcode] 654. Maximum Binary Tree
- 在RHEL6.7上开启大页内存
- alter database move datafile ...... keep
- 线性表的实现及操作
- mysql重命名一个表
- RecyclerView列表九宫格瀑布流,多条目,SpringView实现上拉下拉刷新
- 递归小栗子
- 1002.A+B for Polynomials (两个多项式的解析与合并)
- foreach与&引用的学习
- 考试注意事项
- 使用js仿写jquery中$.ajax()方法
- Js实现倒计时功能