| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 623 人关注过本帖
标题:请教一个关于单链表删除的问题
取消只看楼主 加入收藏
woshixinshou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-7-18
收藏
 问题点数:0 回复次数:1 
请教一个关于单链表删除的问题

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
typedef struct node
{
int date;
struct node *next;
}slnode,*Linknode;
Linknode creat_list()
{
Linknode head;
int n;
head=(Linknode)malloc(sizeof(slnode));
head->next=NULL;
cout<<"请输入结点个数"<<endl;
cin>>n;
cout<<"请输入结点元素"<<endl;
head->date=n;
for (int i=0;i<n;i++)
{
Linknode p ;
p=(Linknode)malloc(sizeof(slnode));
p->next=head->next;
head->next=p;
cin>>p->date;
};
return head;

}

void display_list(Linknode L)
{
Linknode p;
p=L;
cout<<"输出"<<endl;
for(int i=0;i<L->date;i++)
{
p=p->next;
cout<<p->date;
};
}
Linknode intsert_node(Linknode L)
{
int locat;
int ielement;
Linknode Ielement,p;
Ielement=(Linknode)malloc(sizeof(slnode));
Ielement->next=NULL;
cout<<"插人的元素:"<<endl;
cin>>ielement;
Ielement->date=ielement;
p=(Linknode)malloc(sizeof(slnode));
p=L;
cout<<"插入第几个结点:"<<endl;
cin>>locat;
L->date=L->date+1;
for(int i=0;i<locat-1;i++)
{
L=L->next;
};
Ielement->next=L->next;
L->next=Ielement;
return p;


}
Linknode delete_node (Linknode L)
{
Linknode p;
int locat;
p=(Linknode)malloc(sizeof(slnode));
p=L;
cout<<"请输入删除结点的位子"<<endl;
cin>>locat;
if(locat=L->date)
{
for(int i=0;i<locat-1;i++)
L=L->next;
L->next=NULL;
}
else {
for(int i=0;i<locat-1;i++)
L=L->next;
L->next=L->next->next;
};
return p;
}


void main()
{
Linknode p,q;
p=creat_list();
display_list(p);
q=intsert_node(p);
display_list(q);
display_list(delete_node(q));

free (p);
}
程序运行到删除程序输出时出错;

搜索更多相关主题的帖子: 单链 删除 
2006-07-22 20:08
woshixinshou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-7-18
收藏
得分:0 

#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
typedef struct node
{
int date;
struct node *next;
}slnode,*Linknode;
Linknode creat_list() //创建链表//
{
Linknode L;
int n;
L=(Linknode)malloc(sizeof(slnode));
L->next=NULL;
cout<<"请输入结点个数"<<endl;
cin>>n;
cout<<"请输入结点元素"<<endl;
L->date=n; //把结点的个数复值给头结点指向的date//
for (int i=0;i<n;i++)
{
Linknode p ;
p=(Linknode)malloc(sizeof(slnode));
p->next=L->next;
L->next=p;
cin>>p->date;
};
return L;

}

void display_list(Linknode L) //链表的展开//
{
Linknode p;
p=L;
cout<<"输出"<<endl;
for(int i=0;i<L->date;i++)
{
p=p->next;
cout<<p->date;
};
}
Linknode delete_node (Linknode L)//链表删除
{
Linknode p;
int locat;
p=(Linknode)malloc(sizeof(slnode));
p=L;
cout<<"请输入删除结点的位置"<<endl;
cin>>locat;
if(locat=L->date) //删除最后的结点//
{
for(int i=0;i<locat-1;i++)
L=L->next;
L->next=NULL;
}
else { //删除不是最后的结点//
for(int i=0;i<locat-1;i++)
L=L->next;
L->next=L->next->next;
};
return p;
}


void main()
{
Linknode p;
p=creat_list();
display_list(p);
display_list(delete_node(p));

free (p);
}

2006-07-23 09:28
快速回复:请教一个关于单链表删除的问题
数据加载中...
 
   



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

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