| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 440 人关注过本帖
标题:指针访问链表的问题
只看楼主 加入收藏
dickdick117
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
指针访问链表的问题
具体代码如下:

fun的功能是连接两个单链表。
void fun(node *la,node *lb)
{
    while(la != NULL)
    {
        la=la->next;
    }//找到第一个链表的最后一个值
    la =lb->next;//第一个链表的最后一个节点 指向lb的非头节点
}
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
   
    node *testList1,*testList2;
    initList(&testList1);//初始化链表
    initList(&testList2);

    for (i=1;i<4;i++)
    {
        insNode(testList1,i,i);
        insNode(testList2,i+3,i);
    }
    lsList(testList1);
    lsList(testList2);

    fun(testList1,testList2);
    lsList(testList1);//遍历链表
    system("pause");

    return 0;
}
2014-04-29 17:00
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
while(NULL != la->next)
//////

la->next = lb->next;

free(lb);


[fly]存在即是合理[/fly]
2014-04-29 17:02
dickdick117
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-29
收藏
得分:0 
回复 2 楼 azzbcc
哥 出不来结果了。
2014-04-29 17:21
dickdick117
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-29
收藏
得分:0 
回复 2 楼 azzbcc
这是在vs2010 下的全部代码,我调晕了。 这是我们的一个测试题,fun中实现两个链表的连接,其他代码都是做好了的,只能修改 fun下面的代码。。。
#include "stdafx.h"
#include "malloc.h"
#include "string.h"
#include "stdlib.h"

#define DEBUG

#ifdef DEBUG
#define DEBUGOUT(n) printf_s(n)
#else
#define DEBUGOUT(n) ;
#endif

enum rType
{
    FALSE = -1,
    TRUE
};

typedef int datatype;

struct listNode
{
    datatype ldata;
    struct listNode *next;
};

typedef listNode *LinkList,node;


rType initList(LinkList *head)
{
    *head = (node *)malloc(sizeof(node));
    if(head == NULL)
        {
        printf_s("申请内存空间失败\n");
        return FALSE;
        }
    (*head)->next = NULL;                  //将next设置为NULL,初始长度为0的单链表
    return TRUE;
}

rType insNode(LinkList head,datatype dat,int pos)
{
    LinkList p=head,q;
    int i=0;
    while (p && i<pos-1)
    {
        p=p->next;
        i++;
    }
    if (!p || i>pos-1)
    {
        printf_s("插入位置不合法!\r\n");
        return FALSE;
    }
    q=(node *)malloc(sizeof(node));
    q->ldata =dat;
    q->next=p->next;
    p->next=q;
    return TRUE;
}

rType lsList(LinkList head)
{
    LinkList p=head->next;
    if(!p)
        printf_s("\r\n第一个非头节点为空\r\n");
    else
    {
        while (p)
        {
            printf_s("%6d  ",p->ldata);
            p=p->next;
        }
        printf_s("\r\n");
    }
    return TRUE;
}

void fun(node *la,node *lb)
{
    while(NULL != la->next)
        //////

        la->next = lb->next;

    free(lb);
}
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
   
    node *testList1,*testList2;
    initList(&testList1);
    initList(&testList2);

    for (i=1;i<4;i++)
    {
        insNode(testList1,i,i);
        insNode(testList2,i+3,i);
    }
    lsList(testList1);
    lsList(testList2);

    fun(testList1,testList2);
    lsList(testList1);
    system("pause");

    return 0;
}

[ 本帖最后由 dickdick117 于 2014-4-29 17:25 编辑 ]
2014-04-29 17:22
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
。。。

我以后不懒了

程序代码:
void fun(node *la,node *lb)
{
    while(NULL != la->next)
    {
        la=la->next;
    }//找到第一个链表的最后一个值
    la->next = lb->next;//第一个链表的最后一个节点 指向lb的非头节点
    free(lb);
}


[fly]存在即是合理[/fly]
2014-04-29 17:36
dickdick117
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-29
收藏
得分:0 
回复 5 楼 azzbcc
非常感谢,我还是有点晕乎乎的,我在想想。
2014-04-29 18:48
快速回复:指针访问链表的问题
数据加载中...
 
   



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

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