|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题是关于顺序表插入元素的,我在顺序表里插入了一个元素,打印时顺序表里确实插入了
我输入的元素,但是顺序表长度没有增加,我知道我传入子函数的n,在出去子函数后会销毁,
我也想到了用指针,但是不知到怎么改,求大神帮助!
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
//在第i个位置插入数字item
void Inserint(int sqlist[],int n,int i,int item);
void Inserint(int sqlist[],int n,int i,int item)
{
int t;
if(n==MaxSize||i < 1|| i > n+1)
exit(0);
for (t = n-1;t >= i-1;t--)
{
sqlist[t+1]=sqlist[t];
}
sqlist[i-1]=item;
n=n+1;
}
int main()
{
//创建一个静态顺序表
int sqlist[MaxSize]={1,2,4,5,6,7,8,9};
int n=8;
//打印出原来数组和数组长度
printf("原来数组是:");
for ( int i = 0; i < n; i++)
{
printf("%d",sqlist);
}
printf("\n");
printf("原来数组长度是:%d\n",n);
//在数组的第三个位置插入数字3
Inserint(sqlist,n,3,3);
//打印出插入后的数组和数组长度
printf("现在数组:");
for ( int i = 0; i < n; i++)
{
printf("%d",sqlist);
}
printf("\n");
printf("现在数组长度:%d\n",n);
return 0;
}
这是打印结果;
原来数组:12456789
原来数组长度:8
现在数组:12345678
现在数组长度:8
我想要的结果是,现在数组长度:9
可是n没有+1
- void Inserint(int sqlist[], int* n, int i, int item)
- {
- int t;
- if (*n == MaxSize || i < 1 || i > *n + 1)
- exit(0);
- for (t = *n - 1; t >= i - 1; t--)
- {
- sqlist[t + 1] = sqlist[t];
- }
- sqlist[i - 1] = item;
- *n += 1;
- }
- int main()
- {
- //创建一个静态顺序表
- int sqlist[MaxSize] = { 1,2,4,5,6,7,8,9 };
- int n = 8;
- int* p = &n;
- //打印出原来数组和数组长度
- printf("原来数组是:");
- for (int i = 0; i < n; i++)
- {
- printf("%d\t", sqlist[i]);
- }
- printf("\n");
- printf("原来数组长度是:%d\n", n);
- //在数组的第三个位置插入数字3
- Inserint(sqlist, p, 3, 3);
- //打印出插入后的数组和数组长度
- printf("现在数组:");
- for (int i = 0; i < n; i++)
- {
- printf("%d\t", sqlist[i]);
- }
- printf("\n");
- printf("现在数组长度:%d\n", n);
- }
复制代码
这是传入指针的版本
|
|