线性表
2. /*编写一个函数,将一个顺序表 A(有 A 个元素且任何元素均不为 0)分拆成两个顺序表,
使 A 中大于 0 的元素存放在 B 只能够,小于 0 上的元素存放在 C 中。*/
#include<stdio.h> /*输入输出函数中使用的有关说明与定义*/
#include<stdlib.h> /*杂项说明*/
typedef struct /*将数据存储区 data 和指针封装成结构体作为顺序表的类型*/
{
int date[100]; /*定义最大存储*/
int last; /*定义指针*/
}SeqList;
SeqList *init_SeqList() /*顺序表初始化*/
{
SeqList *A,*B,*C; /*定义指向 SeqList 类型的指针 L*/
A=(SeqList *)malloc(sizeof(SeqList)); /*申请大小为 typedef struct A 的动态内存空间*/
B=(SeqList *)malloc(sizeof(SeqList)); /*申请大小为 typedef struct B 的动态内存空间*/
C=(SeqList *)malloc(sizeof(SeqList)); /*申请大小为 typedef struct C 的动态内存空间*/
A->last=B->last=C->last=-1; /*将表中 last 指针置为-1,表示表中没有数据元素*/
return A,B,C; /*返回*/
}
int main() /*主函数*/
{
SeqList *A,*B,*C; /*定义指向 SeqList 类型的指针 A,B,C*/
A=init_SeqList(); /*使用函数 init_SeqList()进行运算*/
B=init_SeqList();
C=init_SeqList();
SeqList *part(SeqList *A,int n,SeqList *B,SeqList *C);/*函数声明*/
int n;
printf("请输入数据元素的个数 n: ");
scanf("%d",&n);
printf("请输入%d 个数据元素(不为 0): ",n);
for(A->last=0;A->last<n;A->last++)
scanf("%d",&A->date[A->last]);
part(A,n,B,C); /*调用函数 part(A,n,B,C)*/
return 0;
}
SeqList *part(SeqList *A,int n,SeqList *B,SeqList *C) /*分拆顺序表*/
{
int i,j=0,k=0;
for(i=0;i<n;i++)
{
if(A->date[i]>0)
{
B->date[j]=A->date[i];
B->last++;
j++;