| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 970 人关注过本帖
标题:求单链表的编程问题 很急!!
只看楼主 加入收藏
hollyhui
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-14
收藏
 问题点数:0 回复次数:2 
求单链表的编程问题 很急!!
在一个单链表中,数据域有正整数,有负整数,且交叉连接,编程实现将数据域为正数的结点连在一起,数据域为负整数的结点连在一起,且仍为一个单链表。”
有哪位好心人能把程序代码写下来,分全给出去!!!急啊。。。
搜索更多相关主题的帖子: 单链 整数 结点 数据 正数 
2008-04-17 22:58
andyzhshg
Rank: 2
等 级:论坛游民
帖 子:111
专家分:20
注 册:2007-9-1
收藏
得分:0 
呵呵,这里可每人稀罕分数啊。
自己动动脑筋比较好
说个思路:
设置两个链表头list1,list2,遍历原链表,把正的元素连接到list1,负的连接到list2,最后把两链表连接

编程并快乐着
2008-04-17 23:06
windlzf
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-8-7
收藏
得分:0 
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"

typedef struct node
{
        int data;
        struct node *next;
}DataNode,*DataList;

int InitDataList(DataList *s)
{
        *s=(DataList)malloc(sizeof(DataNode));
        if(*s==NULL) return 0;
        (*s)->data=0;
        (*s)->next=NULL;
        return 1;
}

int DestroyDataList(DataList *s)
{
        DataList p,q;
        if(*s==NULL) return 1;
        p=(*s)->next;
        while(p!=NULL)
        {
                q=p;
                p=p->next;
                free(q);
        }
        free(*s);
        *s=NULL;
        return 1;
}

int CreateDataList(DataList s,int data[],int n)
{
        int i;
        DataList p,q;
        if(s==NULL||n<=0) return 0;
        for(p=s,i=0;i<n;i++)
        {
                q=(DataList)malloc(sizeof(DataNode));
                if(q==NULL) return 0;
                q->data=data[i];
                q->next=p->next;
                p->next=q;
                p=q;
        }
        return 1;
}

#define Sign(x) ((x)>=0?1:0)

int SortDataList(DataList s)
{
        DataList p,q,r,t;
        if(s==NULL) return 0; /*头结点都不存在*/
        p=s->next;
        if(p==NULL) return 1; /*除头结点外,没有其他结点*/
        q=p->next;
        while(q!=NULL)
        {
                if(Sign(q->data)!=Sign(p->data)) /*2个不同符号的数*/
                        break;
                p=q;
                q=q->next;
        }
        if(q==NULL) return 1; /*不存在2个不同符号的数,链表已经符合要求*/
        r=q->next; /*开始处理剩余结点*/
        while(r!=NULL)
        {
                t=r; /*标记当前结点*/
                r=r->next;
                if(Sign(t->data)==Sign(p->data)) /*t的符号与p符号相同。而与q符号不同,需将t移到p后面*/
                {
                        q->next=t->next; /*t的前驱q指向t的后继*/
                        t->next=p->next; /*t的后继指向p的后继*/
                        p->next=t; /*p的后继指向t*/
                        p=t; /*刷新第一种符号数据的最后一个指针为t*/
                }
                else /*t的符号与q的符号一致,不需移动*/
                {
                        q=t; /*刷新第二种符号数据的最后一个指针为t*/
                }
        }
        return 1;

}

int PrintDataList(DataList s)
{
        DataList p;
        if(s==NULL) return 0;
        p=s->next;
        while(p!=NULL)
        {
                printf("%d ",p->data);
                p=p->next;
        }
        printf("\n");
        return 0;
}

int main(void)
{
        int n,data[4][10]={
                        {1,-2,3,-4,5,-6,7,-8,9,-10},
                        {-1,-2,3,-4,5,-6,7,-8,9,-10},
                        {1,2,3,-4,5,-6,7,-8,9,-10},
                        {10,-21,-35,-4,50,-6,73,-88,91,-10}
                        };
        DataList L;
        for(n=0;n<4;n++)
        {
                InitDataList(&L);
                CreateDataList(L,data[n],10);
                PrintDataList(L);
                SortDataList(L);   
                PrintDataList(L);
                DestroyDataList(&L);
                printf("\n\n");
        }

        getch();
        return 0;
}
收到的鲜花
  • hollyhui2008-04-18 21:17 送鲜花  2朵   附言:我很赞同
  • hollyhui2008-04-18 21:18 送鲜花  2朵  
  • hollyhui2008-04-18 21:18 送鲜花  2朵  
  • hollyhui2008-04-18 21:18 送鲜花  2朵  
  • hollyhui2008-04-18 21:18 送鲜花  2朵  
  • hollyhui2008-04-18 21:30 送鲜花  2朵  
  • hollyhui2008-04-18 21:30 送鲜花  2朵  
  • hollyhui2008-04-18 21:31 送鲜花  2朵  
  • hollyhui2008-04-18 21:31 送鲜花  2朵   附言:我很赞同
  • hollyhui2008-04-18 21:31 送鲜花  2朵   附言:说话算话哦,我的分都给你了!!谢谢你!!!! ...
2008-04-18 13:42
快速回复:求单链表的编程问题 很急!!
数据加载中...
 
   



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

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