| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1482 人关注过本帖
标题:谁能深入详细的讲下 返回指针的函数
只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
程序代码:
#include<stdio.h>                                                                
#include<malloc.h>                                                               
typedef struct Node{                                                             
    int key;                                                                     
    struct Node *next;                                                           
}Node;                                                                           
Node * Combine(Node * head1,Node * head2)                                        
{                                                                                
    Node * head,*p,*q,*r;                                                        
    head=(Node *)malloc(sizeof(Node));                                           
    head->next=NULL;                                                             
    r=head;                                                                      
    p=head1->next;                                                               
    while(p!=NULL)                                                               
    {                                                                            
        q=(Node *)malloc(sizeof(Node));                                          
        q->key=p->key;                                                           
        q->next=NULL;                                                            
        r->next=q;                                                               
        r=r->next;                                                               
        p=p->next;                                                               
    }                                                                            
    p=head2->next;                                                               
    while(p!=NULL)                                                               
    {                                                                            
        q=(Node *)malloc(sizeof(Node));                                          
        q->key=p->key;                                                           
        q->next=NULL;                                                            
        r->next=q;                                                               
        r=r->next;                                                               
        p=p->next;                                                               
    }                                                                            
    return head;                                                                 
}                                                                                
void show( Node *head)                                                           
{                                                                                
    Node *q=head->next;                                                          
    while(q!=NULL)                                                               
    {                                                                            
        printf("%d ",q->key);                                                    
        q=q->next;                                                               
    }                                                                            
}                                                                                
int main()                                                                       
{                                                                                
    Node * head1=(Node *)malloc(sizeof(Node));                                   
    Node * head2=(Node *)malloc(sizeof(Node));                                   
    Node *p=head1;                                                               
    int i;                                                                       
    for(i=1;i<5;i++)                                                             
    {                                                                            
        Node *q=(Node *) malloc(sizeof( Node));                                  
        q->key=i;                                                                
        q->next=NULL;                                                            
        p->next=q;
        p=p->next;
    }
    show(head1);
    printf("\n");
    p=head2;
    for(i=3;i<=4;i++)
    {
        Node *q=(Node *) malloc(sizeof(Node));
        q->key=i;
        q->next=NULL;
        p->next=q;
        p=p->next;
    }
    show(head2);
    printf("\n");
    Node *head=Combine(head1,head2);
    show(head);
    printf("\n");
    return 0;
}
收到的鲜花
  • 雪花神剑2009-09-16 15:01 送鲜花  5朵   附言:好文章
  • 雪花神剑2009-09-16 15:03 送鲜花  5朵  
2009-09-16 14:35
雪花神剑
Rank: 2
来 自:吉林
等 级:论坛游民
帖 子:579
专家分:47
注 册:2009-3-12
收藏
得分:0 
回复 11楼 Devil_W
谢谢了
分有什么好的,要的话,把账号给你都行
2009-09-16 15:02
zd123
Rank: 2
等 级:论坛游民
帖 子:43
专家分:33
注 册:2009-9-4
收藏
得分:3 
为什么我写的就不行呢?         求两个链表的差

#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
#define SIZE sizeof(snode)
typedef struct student
{
    int num;
    struct student *next;
}snode;
snode *create1();
snode *create2();                           //创建链表
void print(snode *head);                    //打印链表
snode *difference(snode *A,snode *B);         
void main(void)
{
 
    snode *head2,*head1,*head3;
    head1=create1();     
    head2=create2();
    printf("\n链表1为:\n");
    print(head1);
    printf("\n链表2为:\n");
    print(head2);
    printf("\n");
    printf("两链表的差为:\n");
    head3=difference(head1,head2);         
    print(head3);
    printf("\n");
 
}
snode *create1()
{
    snode *head,*p,*q;
    int num1;
    head=(snode *)malloc(SIZE);
    head->next=NULL;
    p=head;
    FILE *fp;
    fp=fopen("D:\\qq.txt","r");
    while(!feof(fp))                              
    {
        if((fscanf(fp,"%d",&num1))==-1)
            break;
        q=(snode *)malloc(SIZE);
        q->num=num1;
        q->next=NULL;
        p->next=q;
        p=q;
    }
    return (head);
}
snode *create2()
{
    snode *head,*p,*q;
    int num1;
    head=(snode *)malloc(SIZE);
    head->next=NULL;
    p=head;
    FILE *fp;
    fp=fopen("D:\\aa.txt","r");
    while(!feof(fp))                              
    {
        if((fscanf(fp,"%d",&num1))==-1)
            break;
        q=(snode *)malloc(SIZE);
        q->num=num1;
        q->next=NULL;
        p->next=q;
        p=q;
    }
    return (head);
}
void print(snode *head)
{
    snode *p;
    p=head->next;                 //带头结点
    while(p!=NULL)
    {
        printf("%6d",p->num);
        p=p->next;
    }
}
snode *difference(snode *A,snode *B)                 //   依次查看A中的节点中是否有值与B中相同,若相同, 进入链表C中
{
    snode *pa=A->next,*pb,*s,*r,*c;
    c=(snode *)malloc(SIZE);
    c->next=NULL;
    r=c;
    while(pa!=NULL)                                
    {
        pb=B->next;
        while((pb->num!=pa->num )&& (pb!=NULL))
        {
            pb=pb->next;
        }
        if(pb==NULL)              //  有值与之相同
        {
            s=(snode *)malloc(SIZE);
            s->num=pa->num;s->next=NULL;
            r->next=s;
            r=s;
        }
        pa=pa->next;
    }
    return(c);
 
}
2009-09-16 15:48
zd123
Rank: 2
等 级:论坛游民
帖 子:43
专家分:33
注 册:2009-9-4
收藏
得分:0 
。。。。。。。。。。。。。。。
2009-09-17 12:22
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:3 
为分而写 不厚道
2009-09-17 14:46
雪花神剑
Rank: 2
来 自:吉林
等 级:论坛游民
帖 子:579
专家分:47
注 册:2009-3-12
收藏
得分:0 
回复 13楼 zd123
奇怪
2009-09-21 21:17
快速回复:谁能深入详细的讲下 返回指针的函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029207 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved