创建结构体

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);
}

Last modification:March 18th, 2021 at 08:57 pm
如果觉得我的文章对你有用,请随意赞赏