| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:C语言链表合并 的问题,各位大虾来帮下忙哈
只看楼主 加入收藏
STshenhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2011-9-19
结帖率:0
收藏
已结贴  问题点数:5 回复次数:3 
C语言链表合并 的问题,各位大虾来帮下忙哈
struct Node * inter_link(struct Node * chain1, int a, struct Node * chain2, int b) {
    int temp;
    struct Node *head, *p1, *p2, *pos;
   
    if (a >= b) {
        head = p1 = chain1;
        p2 = chain2;
    } else {
        head = p1 = chain2;
        p2 = chain1;
        temp = a, a = b, b = temp;
    }
   
    pos = head;
    while (p2 != NULL) {
        p1 = p1->next;
        pos->next = p2;
        pos = p2;
        p2 = p2->next;
        pos->next = p1;
        pos = p1;
    }
    return head;
}
我就是想不明白这函数是怎么个运行过程,求解释,能附图最好了
搜索更多相关主题的帖子: C语言 
2011-09-21 19:06
chenjin1st
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:26
专家分:44
注 册:2011-5-13
收藏
得分:3 
写了一个。看能不能帮到你 呵呵
 代码如下
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define Length 10
typedef struct list{
   int data;
   struct list *next;
}link;
link *initLink();
int output(link *);
link *merge_link(link *,link *);
int main(){
   link *e1,*e2;
   e1=initLink();
   printf("e1: ");
   output(e1);
   e2=initLink();
   printf("e2: ");
   output(e2);
   e1=merge_link(e1,e2);
   printf("Merge : ");
   output(e1);
   return 0;
}
link *initLink(){
    int i;
    link *head,*move,*work;
    head=(link *)malloc(sizeof(link));
    move=head;
    head->data=Length;
    for(i=0;i<head->data;i++){
       work=(link *)malloc(sizeof(link));
       work->data=i+1;
       move->next=work;
       move=work;
    }
    move->next=NULL;
    return head;
}
int output(link *p){
   link *loop;
   loop=p->next;
   while(loop){
       printf("%-3d",loop->data);
       loop=loop->next;
   }
   printf("\n");
   return 0;
}
link *merge_link(link *e1,link *e2){
    link *loop_value,*move,*add_value;
    move=e1->next;
    e2=e2->next;
    loop_value=move->next;
    while(loop_value){
        add_value=(link *)malloc(sizeof(link));
        add_value->data=e2->data;
        move->next=add_value;
        add_value->next=loop_value;
        loop_value=loop_value->next;
        move=add_value->next;
        e2=e2->next;
    }
    return e1;
}
图片附件: 游客没有浏览图片的权限,请 登录注册


共同进步,共同收获!!!!
2011-09-21 20:37
STshenhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2011-9-19
收藏
得分:0 
回复 2楼 chenjin1st
程序的实现过程我还是不懂呢。。这个链表的地址指针我总想不明白,还有就是链表里的“=”号和“->”啥区别,都是指向的意思么
2011-09-22 14:08
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:3 
楼主还不懂数据结构,还得好好看书,自己分析分析,我不是专业人士,越说会让你越糊涂

我的地盘
2011-09-22 14:29
快速回复:C语言链表合并 的问题,各位大虾来帮下忙哈
数据加载中...
 
   



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

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