小荆


私信TA

用户名:JHN01

访问量:6285

签 名:

等  级
排  名 2354
经  验 2346
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校 邯郸学院
专  业

  自我简介:

#include<stdio.h>
#include<stdlib.h>


typedef struct node{
 struct node *next;
 int num;
 int exp;}data;


data *creatlist(int *a,int n)      //尾插法创建链表
{
 data *head,*p,*q;
 int i;
 head=p=(data *)malloc(sizeof(data));

 for(i=0;i<n-1;i=i+2)            //注意
 {
 q=(data *)malloc(sizeof(data));
 q->num=a[i];
 q->exp=a[i+1];
 p->next=q;
 p=q;
 }

 p->next=NULL;
 return head;
}


void fun(char *s,int *a,int *n)      //将字符串中的正数,负数,0转化为int型
{
 int sum,k=0;

 while(*s)
 {
  if(*s=='-')
  {
  sum=0;
  s=s+1;

  while(*s>='0'&&*s<='9')
  {
   sum=sum*10+*s-48;
   s++;
  }
  a[k++]=-sum;
  }

  else if(*s>='0'&&*s<='9')
  {
  sum=0;

  while(*s>='0'&&*s<='9')
  {
   sum=sum*10+*s-48;
   s++;
  }

  a[k++]=sum;
  }

  else
   s++;
 }
 *n=k;
}


void merge(data *head,data *head1)   //合并链表
{
 data *p,*q,*pa;
 pa=head;
 p=pa->next;
 q=head1->next;

 while(p&&q)
 {
  if(p->exp>q->exp)
  {
   pa->next=p;
   pa=p;
   p=p->next;
  }

  else if(p->exp<q->exp)
  {
   pa->next=q;
   pa=q;
   q=q->next;
  }

  else
  {
   pa->next=p;
   pa=p;
   pa->num=pa->num+q->num;
   p=p->next;
   q=q->next;
  }
 }
 pa->next=p?p:q;


void outlist(data *head)
{
 data *pa;

 for(pa=head->next;pa;pa=pa->next)
 {
  if(pa->num!=0)
  printf("%d %d ",pa->num,pa->exp);
 }
 putchar('\n');
}


int main()
{
 char ch[200],s[200];
 int a[100],b[100],k,n;
 data *head,*head1;

 while(gets(ch)!=NULL)
 {
  fun(ch,a,&k);
  head=creatlist(a,k);

  gets(s);
  fun(s,b,&n);
  head1=creatlist(b,n);

  merge(head,head1);
  outlist(head);
 }
 return 0;
}


 

0.0分

2 人评分

  评论区

  • «
  • »