| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 15722 人关注过本帖, 5 人收藏
标题:[原创]链表基本操作的程序实现.
只看楼主 加入收藏
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
多谢楼主...

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-10 23:29
linux_ha
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-19
收藏
得分:0 
楼主给个释放头为head的链表的函数吧!

2007-04-28 17:43
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 

我滴


/*****链式表的实现和操作*****/
//作者:zkkpkk
#include <iostream.h>

class Linklist//定义链表类
{
public:
Linklist* next;
Linklist()
{
next=NULL;
}
int data;
void Push(Linklist** refhead,int data);//添加节点
void Insert(Linklist* head,Linklist* pio);//插入节点
void Display(Linklist* head);//显示链表
int Length(Linklist* head);//统计节点数目
Linklist* Find(Linklist* head,int data);//查找节点地址
void Delete(Linklist* head,int data);//删除节点
};
Linklist* head=new Linklist;
void Linklist::Insert(Linklist* head,Linklist* pio)
{
Linklist *cur,*bef;
cur=bef=head;
while(cur != NULL)
{ if(cur->data >= pio->data)
break;
else
{bef=cur;
cur=cur->next;
}
}
if(cur==head)
{ pio->next=head;
head=pio;
}
else
{
bef->next=pio;
pio->next=cur;
}
}
Linklist* Linklist::Find(Linklist* head,int data)
{
bool bo=true;
Linklist* cur;
cur=head;
while(cur != NULL)
{
if(cur->data==data){
bo=false;
return cur;}
cur=cur->next;
}
if(bo==true){
cout<<\"It is no have the Linklist!\"<<endl;
return NULL;
}
}
int Linklist::Length(Linklist* head)
{
int count=0;
Linklist* cur;
cur=head;
while(cur != NULL)
{
cur=cur->next;
count++;
}
return count;
}
void Linklist::Push(Linklist** refhead,int data)
{
Linklist* newLinklist=new Linklist;
newLinklist->data=data;
newLinklist->next=*refhead;
*refhead=newLinklist;
}
void Linklist::Display(Linklist* head)
{
Linklist *temp=new Linklist;
temp=head;
if(temp==NULL)
cout<<\"The Linklist is empty!\"<<endl;
else
{
while(temp!=NULL)
{
cout<<temp->data<<\"\t\";
temp=temp->next;
}
cout<<endl;
}
}
void Linklist::Delete(Linklist* head,int data)
{
Linklist *cur,*bef;
cur=bef=head;
while(cur != NULL)
{
if(cur->data==data)
break;
else
{
bef=cur;
cur=cur->next;
}
}
if(cur==head)
{
cur->next=head;
delete cur;
}
else
{
bef->next=cur->next;
delete cur;
}
}


Viva,espana!
2007-04-28 19:27
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

/************************************/
/* 释放链表 */
/************************************/
void Free_Node(node *head)
{
node *p=head->next;
while(p)
{
head->next=p->next;
free(p);
p=head->next;
}
free(head);
}


倚天照海花无数,流水高山心自知。
2007-04-29 13:19
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 


void Linklist::Delete_Link(Linklist* head)
{
Linklist* temp = head->next;
while(!(temp == NULL))
{
head->next=temp->next;
delete temp;
temp=head->next;
}
delete head;
}


Viva,espana!
2007-04-29 13:27
linux_ha
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-19
收藏
得分:0 
以下是引用nuciewth在2007-4-10 13:52:59的发言:

#include"head_node.h"
node* merge_two_List(node *head1,node *head2)
{
node *head,*s,*p,*r;
p=head1->next;
s=head2->next;
head=(node*)malloc(sizeof(node));
head->next=NULL;
r=head->next;
while(s&&p)
{
if(p->info<s->info)
{
head1->next=p->next;
p->next=NULL;
r->next=p;
r=r->next;
p=head1->next;
}
else
{
head2->next=s->next;
s->next=NULL;
r->next=s;
r=r->next;
s=head2->next;
}
}
while(s)
{
head2->next=s->next;
s->next=NULL;
r->next=s;
r=r->next;
s=head2->next;
}
while(p)
{
head1->next=p->next;
p->next=NULL;
r->next=p;
r=r->next;
p=head1->next;
}
//free(head1);
//free(head2);
return head;
}

int main()
{
node *head,*head1,*head2;
head1=Creat_Node();
head2=Creat_Node();
head=merge_two_List(head1,head2);
Print_Node(head);
return 0;
}



上面的合并函数有个问题:结构指针r的开始被赋值为"null", 然后在 while 循环里又令 r->next = p, 这是不是有问题?


2007-04-30 14:13
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
结构指针r的开始被赋值为"null", 然后在 while 循环里又令 r->next = p,
是哪,能不能标记一下.

倚天照海花无数,流水高山心自知。
2007-04-30 20:26
少博
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-4-29
收藏
得分:0 
我还看不懂呀.看来我要多下点功夫才行.
2007-05-01 21:04
hyfz_825
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-5-2
收藏
得分:0 

看到版主写下这么多的代码,真是好兴奋呀!虽然学习数据结构已经有几个月了,但是还是没有弄明白那些算法,和一个程序之间有什么联系!算法是在程序中调用的还是怎么样,一直没有弄明白,请教好多同学,他们也是说不清楚的,希望你能指点一下,谢谢了!


爲明天而奮鬥!!!
2007-05-02 23:25
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
以下是引用nuciewth在2007-4-30 20:26:52的发言:
结构指针r的开始被赋值为"null", 然后在 while 循环里又令 r->next = p,
是哪,能不能标记一下.

这两句没有问题呀


Viva,espana!
2007-05-03 22:01
快速回复:[原创]链表基本操作的程序实现.
数据加载中...
 
   



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

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