创建结构体
typedef struct{
int a[100];
int size;
}List;
输入数据
void init(List*p){
int x;
p->size=0;
printf("请输入数据 以0结束:\n");
scanf("%d",&x);
while(x!=0){
p->a[p->size]=x;
scanf("%d",&x);
p->size++;
}
}
输出数据
void print(List*p){
int i;
printf("\n数组是:");
for(i=0;i<p->size;i++){
printf("%d ",p->a[i]);
}
}
增添
void add(List*p,int i,int j){
int x;
//1.判断合法
//2.后移
//3.赋值
if(i<0||i>p->size)
printf("输入不合法");
for(x=p->size;x>=i;x--){
p->a[x+1]=p->a[x];
}
p->a[i]=j;
p->size++;
}
删除
void sanchu(List*p,int i){
int x;
if(i<0||i>p->size)
printf("输入不合法");
for(x=i;x<=p->size;x++){
p->a[x]=p->a[x+1];
}
p->size--;
}
查找(按下标)
int find(List*p,int i){
if(i<0||i>p->size-1)
printf("输入不合法");
else{
return p->a[i];
}
}
查找(按值)
int find1(List*p,int x){
int i;
for(i=0;i<p->size;i++){
if(p->a[i]==x)
return i;
else
printf("查找失败");
return -1;
}
}
主调函数
int main()
{
/*List L;
init(&L);
print(&L);
zengtian(&L,2,222);
print(&L);
return 0;
*/
List *p;
p=(List*)malloc(sizeof(List));
init(p);
print(p);
add(p,2,222);
print(p);
sanchu(p,2);
print(p);
printf("\n查找结果是:%d",find(p,3));
printf("\n查找结果下标是:%d",find1(p,1));
return 0;
}
代码如下
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a[100];
int size;
}List;
void init(List*p){
int x;
p->size=0;
printf("请输入数据 以0结束:\n");
scanf("%d",&x);
while(x!=0){
p->a[p->size]=x;
scanf("%d",&x);
p->size++;
}
}
void print(List*p){
int i;
printf("\n数组是:");
for(i=0;i<p->size;i++){
printf("%d ",p->a[i]);
}
}
void add(List*p,int i,int j){
int x;
//1.判断合法
//2.后移
//3.赋值
if(i<0||i>p->size)
printf("输入不合法");
for(x=p->size;x>=i;x--){
p->a[x+1]=p->a[x];
}
p->a[i]=j;
p->size++;
}
void sanchu(List*p,int i){
int x;
if(i<0||i>p->size)
printf("输入不合法");
for(x=i;x<=p->size;x++){
p->a[x]=p->a[x+1];
}
p->size--;
}
int find(List*p,int i){
if(i<0||i>p->size-1)
printf("输入不合法");
else{
return p->a[i];
}
}
int find1(List*p,int x){
int i;
for(i=0;i<p->size;i++){
if(p->a[i]==x)
return i;
else
printf("查找失败");
return -1;
}
}
int main()
{
/*List L;
init(&L);
print(&L);
zengtian(&L,2,222);
print(&L);
return 0;
*/
List *p;
p=(List*)malloc(sizeof(List));
init(p);
print(p);
add(p,2,222);
print(p);
sanchu(p,2);
print(p);
printf("\n查找结果是:%d",find(p,3));
printf("\n查找结果下标是:%d",find1(p,1));
return 0;
}
输出结果
请输入数据 以0结束:
1 2 3 4 5 0
数组是:1 2 3 4 5
数组是:1 2 222 3 4 5
数组是:1 2 3 4 5
查找结果是:4
查找结果下标是:0
--------------------------------
Process exited after 9.159 seconds with return value 0
请按任意键继续. . .
更新:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a[100];
int size;
}List;
void init(List*p){
int x;
p->size=0;
printf("请输入数据 以-1结束:\n");
scanf("%d",&x);
while(x!=-1){
p->a[p->size]=x;
scanf("%d",&x);
p->size++;
}
}
void print(List*p){
int i;
printf("\n数组是:");
for(i=0;i<p->size;i++){
printf("%d ",p->a[i]);
}
}
void add(List*p,int i,int j){
int x;
//1.判断合法
//2.后移
//3.赋值
if(i<0||i>p->size)
printf("输入不合法");
for(x=p->size;x>=i;x--){
p->a[x+1]=p->a[x];
}
p->a[i]=j;
p->size++;
}
void shanchu(List*p,int i){
int x;
if(i<0||i>p->size)
printf("输入不合法");
for(x=i;x<=p->size;x++){
p->a[x]=p->a[x+1];
}
p->size--;
}
int find(List*p,int i){
if(i<0||i>p->size-1)
printf("输入不合法");
else{
return p->a[i];
}
}
int find1(List*p,int x){
int i;
for(i=0;i<p->size;i++){
if(p->a[i]==x)
return i;
else
printf("查找失败");
return -1;
}
}
void transPorsition(List *p){
int i = 0,j = p->size-1,r;
for(i;i < j;i++,j--){
r = p->a[i];
p->a[i] = p->a[j];
p->a[j] = r;
}
print(p);
}
void moveOJ(List *p)
{
int i=0,j=p->size-1,t;
while (i<j)
{
while ((i<j) && (p->a[j]%2==0)) //从右往左遍历找第一个奇数
j--;
while ((i<j) && (p->a[i]%2==1)) //从左往右遍历找第一个偶数
i++;
if (i<j) //如果未到达“分界线”,将上述循环中找到的奇数和偶数交换
{
t=p->a[i];
p->a[i]=p->a[j];
p->a[j]=t;
}
}
print(p);
}
void shan3(List* p){
int i;
for(i=0;i<p->size;i++){
if(p->a[i]%3==0){
shanchu(p,i);
}
}
}
void deleteAll(List *p){
int tail, i;
tail=0; i=0;
while(i<p->size)
if(p->a[i]%2==0) i++; //覆盖 满足的条件
else { p->a[tail]=p->a[i]; tail++; i++; }
p->size=tail;
}
void shanspecified(List*p,int x){//删除指定元素
int i,j;
for(i=0;i<p->size;i++){
if(p->a[i]==x)
shanchu(p,i);
}
}
void merge(List *L1,List *L2,List *L3)
{
int i=0,j=0,k=0;
while(i<L1->size &&j<L2->size )
{
if(L1->a [i] > L2->a [j])
{L3->a [k]=L2->a [j];j++;k++;}
else
{L3->a [k]=L1->a [i];i++;k++;}
}
while(i< L1->size )
{L3->a [k]=L1->a [i];i++;k++;}
while(j< L2->size )
{L3->a [k]=L2->a [j];j++;k++;}
L3->size =k;
}
void addup(List *p,int x){
int i;
for(i=p->size-1;i>=0;i--){
if(p->a[i]>x)
p->a[i+1]=p->a[i];
else{
p->a[i+1]=x;
p->size++;
break;
}
}
}
int main()
{
//1
/*List L;
init(&L);
print(&L);
zengtian(&L,2,222);
print(&L);
return 0;
*/
/*
List *L1;
L1=(List*)malloc(sizeof(List));
init(L1);
List *L2;
L2=(List*)malloc(sizeof(List));
init(L2);
List *L3;
L3=(List*)malloc(sizeof(List));
merge(L1,L2,L3);
print(L3);
*/
//2
/*
List *p;
p=(List*)malloc(sizeof(List));
init(p);
print(p);
add(p,2,222);
print(p);
shanchu(p,2);
print(p);
printf("\n查找结果是:%d",find(p,3));
printf("\n查找下标是:%d",find1(p,1));
transPorsition(p);
moveOJ(p);
shan3(p);
print(p);
deleteAll(p);
print(p);
shanspecified(p,7);
print(p);*/
List *p;
p=(List*)malloc(sizeof(List));
init(p);
addup(p,3);
print(p);
}