删除所有奇数顺序表c语言,怎么将一个线性表(顺序表)拆分成两个奇偶表(C语言)?...
如何將線性表A拆分成線性表A和B,使得A存放奇數,B存放偶數?
1.基礎函數
1.1 get取函數
int get(nod *la,int i)
{
return la->data[i];
}
1.2 insert插入函數
void insert(nod *la,int x,int j)
{
int i;
for(i=length;i>=j;i--)
{
la->data[i+1]=la->data[i];
}
la->data[j]=x;
la->len++;
}
1.3 Delete刪除函數
void Delete(nod* la,int i)
{
int j;
for(j=i+1;j<=12;j++)
la->data[j-1]=la->data[j];
la->len--;
}
2. 主函數
思路不難,總的來說也就是一個簡單的判斷,如果該數可以被2整除,那么它就是整數;如果不能,它就是奇數。
此程序采用的是順序表,這里有定義如下:
typedef struct node
{
int data[maxsize];//#define maxsize 1024
int len;
}nod;
2.1 清零
memset(la.data,0,sizeof(la.data));
memset(lb.data,0,sizeof(lb.data));
事實證明,清零和不清零,似乎沒有什么大的區別。
2.2 循環判斷
while(i<=la.len)
{
x=get(&la,i);
if(x%2==0)
{
insert(&lb,x,j);
j++;
Delete(&la,i);
}
else i++;
}
這里用&la,&lb是因為之前定義的nod la,lb;
2.3 輸出結果
for(i=1;i<=la.len;i++)
printf("%d ",la.data[i]);
putchar(10);
for(i=1;i<=lb.len;i++)
printf("%d ",lb.data[i]);
3. 代碼
#include
#include
#define maxsize 1024
#define length 11
typedef struct node
{
int data[maxsize];
int len;
}nod;
int get(nod *la,int i)
{
return la->data[i];
}
void insert(nod *la,int x,int j)
{
int i;
for(i=length;i>=j;i--)
{
la->data[i+1]=la->data[i];
}
la->data[j]=x;
la->len++;
}
void Delete(nod* la,int i)
{
int j;
for(j=i+1;j<=12;j++)
la->data[j-1]=la->data[j];
la->len--;
}
int main()
{
nod la,lb;
memset(la.data,0,sizeof(la.data));
memset(lb.data,0,sizeof(lb.data));
int i,j;
for(i=1;i<=length;i++)
{
scanf("%d",&la.data[i]);
}
la.len=length;
lb.len=0;
i=j=1;
int x;
while(i<=la.len)
{
x=get(&la,i);
if(x%2==0)
{
insert(&lb,x,j);
j++;
Delete(&la,i);
}
else i++;
}
for(i=1;i<=la.len;i++)
printf("%d ",la.data[i]);
putchar(10);
for(i=1;i<=lb.len;i++)
printf("%d ",lb.data[i]);
return 0;
}
4.總結
第一次用typora寫博客,一篇水文,當作試水吧。
標簽:奇偶,lb,線性表,la,int,len,C語言,nod,data
來源: https://blog.csdn.net/weixin_43462804/article/details/112723271
總結
以上是生活随笔為你收集整理的删除所有奇数顺序表c语言,怎么将一个线性表(顺序表)拆分成两个奇偶表(C语言)?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中extent的用法,extent
- 下一篇: 华为8c系统语言切换,华为WS331C怎