| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1742 人关注过本帖
标题:无头结点单链表删除结点问题
取消只看楼主 加入收藏
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
无头结点单链表删除结点问题
要实现删除一个没有头结点的单链表中删除第i个之后的连续k个结点,下面是我写的代码,头一次接触数据结构,好像在用键盘输入创建单链表的地方很乱,劳烦大家看看,给我指指问题吧,我将感激不尽啊
#include <stdio.h>
#include <malloc.h>
typedef struct lianbiao
{
int data;
struct lianbiao * next;
}lianbiao, *list;

//建立链表
list creatlist(list p)
{
int temp;
list q;

printf("请输入结点的值(以0结束):");
fflush(stdin);
scanf("%d",&temp);
while (temp != 0)
if(temp >0 && temp <9999)
{
q = (list)malloc(sizeof(lianbiao)); //生成新的结点
q -> data = temp;
q -> next = p -> next;
p -> next =q;
}
printf("请输入结点的值(以0结束)");
fflush(stdin);
scanf("%d",&temp);
return p;
}
//删除从第i个结点开始的连续k个结点

int del(int i,int k)
{
list p,q;
int j,n;
q = p -> next;
for(j = 1;j < i;j ++)
{
if(p)
{
p = p -> next;
q = q -> next;
}
else break;
}
for (n = 0;n <= k;n ++)
{
p -> next = q -> next;
free(q);
p -> next = q;
}
return 0;
}

//输出链表
void print(list p)
{
//list p;
int i = 0;
while (p != NULL)
{
i ++;
printf("第%d个元素是:",i);
printf("%d\n",p -> data);
p = p -> next;
}
}

void main()
{
list p;
p = (list)malloc(sizeof(lianbiao));
creatlist(p);
print(p);
del(1,5);//第1个结点开始的连续5个结点
print(p);
}
搜索更多相关主题的帖子: 键盘 
2011-03-15 21:04
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
回复 2楼 寒风中的细雨
谢谢啊。。。我的C语言当初没学好,现在学起数据结构实现起来吃力了。。。
我会努力的。。。
bccn太好了。。。
再次感谢啊。。。

。。。!!!)))000
2011-03-15 22:11
快速回复:无头结点单链表删除结点问题
数据加载中...
 
   



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

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