| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:[求助]单链表改进!
只看楼主 加入收藏
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:6 
[求助]单链表改进!

改进!!
单链表分解:

#include <stdio.h>
#include <malloc.h>
#include <conio.h>

typedef struct node
{
int data;
struct node *next;
}*LinkList, ListNode;

void CreateList(LinkList *head);
void Docompose(LinkList *head1, LinkList *head2);//单链表head1分解
void VisitList(LinkList head);
void DestroyList(LinkList *head);

int main(void)
{
LinkList newhead1 = NULL, newhead2 = NULL;

CreateList(&newhead1);
VisitList(newhead1);

Docompose(&newhead1, &newhead2);

VisitList(newhead1);
VisitList(newhead2);

DestroyList(&newhead1);
DestroyList(&newhead2);

getch();
return 0;
}

void CreateList(LinkList *head)
{
ListNode *p, *q;
int item;

q = NULL;

printf("Enter the item:\n");
scanf("%d", &item);

while (item != 0)
{
p = (LinkList)malloc(sizeof(ListNode));
if (p == NULL)
exit(1);
p -> data = item;

if (*head == NULL)
*head = p;
else
q -> next = p;
q = p;

printf("Enter the item:\n");
scanf("%d", &item);
}
if (q != NULL)
q -> next = NULL;
}

void Docompose(LinkList *head1, LinkList *head2)
{
int item;
ListNode *p, *tail1;
p = *head1;

printf("Enter docompose number:\n");
scanf("%d", &item);

while(p -> data != item)
{
p = p -> next;
}

tail1 = p;
p = p -> next;
tail1 -> next = NULL;

*head2 = p;
}

void VisitList(LinkList head)
{
LinkList p;
p = head;

while (p)
{
printf("%d ", p -> data);
p = p -> next;
}
printf("\n");
}

void DestroyList(LinkList *head)
{
LinkList p;


while (*head != NULL)
{
p = *head;
*head = (*head) -> next;
free(p);
}

}

搜索更多相关主题的帖子: 单链 改进 
2006-05-21 10:39
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include <stdio.h>
#include <malloc.h>
#include <conio.h>

typedef struct node
{
int data;
struct node *next;
}*LinkList, ListNode;

void CreateList(LinkList *head);
void Docompose(LinkList *head1, LinkList *head2);
void VisitList(LinkList head);
void DestroyList(LinkList *head);

int main(void)
{
LinkList newhead1 = NULL, newhead2 = NULL;

CreateList(&newhead1);
VisitList(newhead1);

Docompose(&newhead1, &newhead2);

VisitList(newhead1);
VisitList(newhead2);

DestroyList(&newhead1);
DestroyList(&newhead2);

getch();
return 0;
}

void CreateList(LinkList *head)
{
ListNode *p, *q;
int item;

q = NULL;

printf("Enter the item:\n");
scanf("%d", &item);

while (item != 0)
{
p = (LinkList)malloc(sizeof(ListNode));
if (p == NULL)
exit(1);
p -> data = item;
p->next=NULL;
if (*head == NULL)
*head = p;
else
q -> next = p;
q = p;
/*后面的就不要了
 if (q != NULL)
q -> next = NULL;

*/

printf("Enter the item:\n");
scanf("%d", &item);
}

}

void Docompose(LinkList *head1, LinkList *head2)
{
int item;
ListNode *p, *tail1;
p = *head1;

printf("Enter docompose number:\n");
scanf("%d", &item);
/*
  这个地方帮你改了一下,输入的数应该归属于下一个链
*/

while(p -> data != item)
{
tail1=p;
p = p -> next;
}


tail1 -> next = NULL;

*head2 = p;
}

void VisitList(LinkList head)
{
LinkList p;
p = head;

while (p)
{
printf("%d ", p -> data);
p = p -> next;
}
printf("\n");
}

void DestroyList(LinkList *head)
{
LinkList p;


while (*head != NULL)
{
p = *head;
*head = (*head) -> next;
free(p);
}

}




对不礼貌的女生收钱......
2006-05-21 11:45
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
行了,不用改了,能写这样就行了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-21 11:54
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

夸我呢,还是挖苦我呢?!
晕啦!

奋斗改变一切!!
2006-05-21 11:59
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
ListNode *p, *q;

你都定义了指针类型了你还用这种方式做什么


直接用LinkList p, q就行了,要一直性.

while (p)
{
printf("%d ", p -> data);
p = p -> next;
}

这里不需要在设置P了,直接用实参传过来的指针就行

p = (LinkList)malloc(sizeof(ListNode));
if (p == NULL)
exit(1);
这里直接测试,不用分开

p -> data = item;

这里生成新结点后加个p -> nextPtr = NULL

tail1 = p;
p = p -> next;
tail1 -> next = NULL;

这里你放个tail1做什么,直接用P,先将P赋给headPtr2,然后将P指向NULL

行了,基本上了,我忙去了,有事发信吧



日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-21 12:10
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

楼主,链表就是明白它的逻辑存储结构,就可以随便写了

多写熟练就行,你发这么多关于链表的没必要,不要产生依赖


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-21 13:58
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

谢谢各位!!
我会慢慢改进的!!


奋斗改变一切!!
2006-05-21 18:20
快速回复:[求助]单链表改进!
数据加载中...
 
   



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

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