📄 插入(顺序存储).cpp
字号:
/* 实验内容
2.线性表v的数据递增有序,试将x插入表中并保持有序性
(1)顺序表表示
*/
#include "stdio.h"
#include"malloc.h"
#define MAXSIZE 20
typedef int elemtype;
typedef struct
{ elemtype data[MAXSIZE];//存放顺序表元素
int length;//存放顺序表的长度
} LNode;//顺序表的定义类型
void creat(LNode *L)//创建顺序链表
{ int i,n,j=0;
// int c[100];
printf("请问,你想输几个数:");
scanf("%d",&n);
L->length=n;
printf("请输入%d个数:",n);
/* for(i=0;i<100;i++)
{
scanf("%d",&L->data[i]);
j++;//用来记录输入数据的个数
c[i]=getchar();//输入的数存放在c中
if (c[i]=='\n')
{
break;
}
else if(c[i]=='$')
{
j--;
break;
}*/
for(i=0;i<n;i++)
scanf("%d",&L->data[i]);
// if(j>n)
// printf("你输入的数大于你想要输入数的个数,请重新输入");
// else
//{
printf("你输入%d个数据为:",n);
for(i=0;i<n;i++)
printf("%d ",L->data[i]);
printf("\n");
getchar();
//}
}
int Insert(LNode *L,int i,int x)//在链表L的i位置插入值x
{ int j;
if(i<0||i>L->length+1)
{ printf("输入的位置值有误\n");
return 0;
}
if(L->length+1>=MAXSIZE)
{ printf("溢出错误!");
return 0;
}
for(j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];//将data【i】及其后面的元素后移一个位置
i=i-1;
L->data[i]=x;//将x插入
L->length++; //顺序表长度增1
return 1;
}
int deletelist( LNode *L,int i)//删除第i个位置
{
if(i<0 ||i>L->length)
{ printf("位置不存在!\n");
return 0;
}
for(;i<L->length;i++)
L->data[i-1]=L->data[i];//将data【i】之后的元素前移一个位置
L->length--;//顺序表长度减1
return 1;
}
void print(LNode *L)//输出链表
{ int i;
for(i=0;i<L->length;i++)
printf("%5d",L->data[i]);
printf("\n");
getchar();
}
void main()
{ LNode *L;
int i,x;
//clrscr();
L=(LNode *)malloc(sizeof(LNode));
creat(L);
printf("请输入插入的位置和值(中间按间隔隔开):\n");
scanf("%d %d",&i,&x);
Insert(L,i,x);
printf("插入后的链表为:");
print(L);
printf("请输入想删除的位置 :");
scanf("%d",&i);
deletelist(L,i);
printf("删除后的链表为:");
print(L);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -