正文

合并有序连表为一有序表除去被3整除2007-04-18 14:34:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/7zeal/24980.html

分享到:

#define NULL 0#include"stdio.h"#include"malloc.h" typedef struct LNode{    int data;    struct LNode *next;}LNode,*LinkList;//////////////////////////////////////////////////////////////*带头结点的尾插法建立单链表,返回表头指针*/LinkList  CREATLIST(){    int data;    LinkList head,s,r;    head=(LinkList)malloc(sizeof(LNode));        /*生成头结点*/    r=head;                                      /*尾指针初值指向头结点*/  scanf("%d",&data);    while(data!=0)                              /*0为输入结束符*/    {  s=(LinkList)malloc(sizeof(LNode));    /*生成新结点*/        s->data=data;        r->next=s;                            /*新结点插入表尾*/        r=s;                                  /*尾指针r指向新的表尾*/        scanf("%d",&data);                    /*读下一结点*/    }    r->next=NULL;    return (head);}/////////////////////////////////////////////////////////////////////两个有序链表的合并!!注意是升序LinkList CONNECT(LinkList head1,LinkList head2){ LinkList p,p1,p2;    p=head1; p1=head1->next; p2=head2->next;    while(p1&&p2)    {  if(p1->data<=p2->data)        {   p->next=p1;p=p1;p1=p1->next;  }        else  {   p->next=p2;p=p2;p2=p2->next;  }    }    p->next=p1?p1:p2;//连接剩下的链表    free(head2);    return(head1);}/////////////////////////////////////////////////////////////////*遍历线性表a中的元素*/void output(LinkList head){    LinkList p;    p=head;    while(p->next!=NULL)     {       printf("%8d",p->next->data);       p=p->next;     } printf("\n");}/////////////////////////////////////////////////////////////////*查找合并线性表中被三整除的元素删除*/void sdmodn(LinkList head,int n){    LinkList p,p1;    p=head;    p1=head;     while(p->next!=NULL)    {        p=p->next;        if((p->data)%n==0)        {          p1->next=p->next;          free(p);          p=p1;//KEY        }        else p1=p;    }}   int main(){ /*定义*/    LinkList head1,head2;     /*尾插建表*/    printf("\n\nInput list In increase  a:(input integral end by 0)\n");    head1=CREATLIST();  /*线性表b*/ printf("\n\n\nInput list In increase  b:(input integral end by 0)\n"); head2=CREATLIST();  /*两个链表的合并*/ printf("\n\n\nlist a:\n"); output(head1); printf("\n\n\nlist b:\n"); output(head2);  printf("\n\nLinearlist after connect:\n"); head1=CONNECT(head1,head2); /*遍历线性表的元素*/ output(head1); printf("\n\n\npress any key to exit!\n");  sdmodn(head1,3); printf("\n\n\nnew list without mod 3!\n"); output(head1);  return 0;}  

阅读(2285) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册