| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1628 人关注过本帖
标题:大家帮我看看 26个字母删除的操作,怎么只能删除一个呀``???
只看楼主 加入收藏
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
 问题点数:0 回复次数:21 
大家帮我看看 26个字母删除的操作,怎么只能删除一个呀``???

#include <stdio.h> #define len sizeof(struct a) #define NULL 0

struct a {char lk; struct a *next ; };

main() {struct a *head,*p,*q,*r; int i; char ch;

head=p=(struct a *) malloc(len);

for(i=1;i<=26;i++) {(p->lk)=('a'+i-1); p->next=(struct a *)malloc(len); p=p->next;

} p->next=NULL; p=head;

while (p->next != NULL)

{ printf("%c ",p->lk); p=p->next; } printf("\n");

printf("input deleted zimu:");

scanf("%c",&ch); p=head; while(ch != '0') { if(head->lk==ch) {head=head->next; free(p); } else

while((p->lk != ch) && (p->next != NULL)) { q=p; p=p->next; }

if(p->lk==ch) {q->next=p->next; free(p);}

printf("\n"); p=head; while(p->next != NULL) {printf("%c ",p->lk); p=p->next; } printf("\n"); printf("input deleted zimu:"); scanf("%c",&ch);

} }

搜索更多相关主题的帖子: next struct 字母 head 
2005-04-08 17:43
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
等等,请说清楚点,我根本就不明白你想实现什么而不能实现什么呀!

淘宝杜琨
2005-04-08 23:05
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 

printf("input deleted zimu:");

scanf("%c",&ch); p=head; while(ch != '0') { if(head->lk==ch) {head=head->next; free(p); } else

while((p->lk != ch) && (p->next != NULL)) { q=p; p=p->next; }

if(p->lk==ch) {q->next=p->next; free(p);} 你这样当然只能删除一个了。因为他你输入一个他就删除一个。如果想全删除也行 ---------------------------------------- p=head; while(p){ q=p; p=p->next; free(q); } p=NULL; //这个可以不要。但是为了养成编程的良好习惯最好是加上。因为这样就不会造成空悬指针。 q=NULL; free(head);


生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-09 09:12
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
而且你的删除好象很有问题。你的括号让人看了就头晕。。。。。
如果想删除一个就这样写吧
p=head;
while(p-&gt;next!=NULL&amp;&amp;p-&gt;next-&gt;data!=key) //key为你要删除的字符
 p=p-&gt;next;
 if(p-&gt;next==NULL) printf("没有找到你要删除的字符\n!");  //如果找到链表末尾都没找到你要删除的字符。那就输出提示语句
 else {
  q=p-&gt;next;             //然后使q指向要删除的节点
  p-&gt;next=q-&gt;next;   //改变p指向的位置
  free(q);               //删除节点
 q=NULL;             //不要造成空悬指针 。这个是我个人风格。。。。这样没那么容易出错
}


坚强依然!永不言苦!永不言败!睇透数据结构!编程编程再编程!------激情依旧

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-09 09:21
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
以下是引用神vLinux飘飘在2005-4-8 23:05:48的发言: 等等,请说清楚点,我根本就不明白你想实现什么而不能实现什么呀!
我想实现: 先 打印一行 a,b,c,d,e-----------------------,z LA 然后用 scanf 函数 接受一个字符 ,然后用这个字符 和LA比较,如果一样的话,就删除````

我录的歌 http://1680279./ 我现在打不开了????
2005-04-09 11:24
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
好好理解3-4楼的回复,
还有,你是在刚刚学习裢表吧,加油喔~


淘宝杜琨
2005-04-09 11:54
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
是的``

刚学链表,老师就让做 ,26个字母的插入和删除````

我录的歌 http://1680279./ 我现在打不开了????
2005-04-09 11:59
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
老是让我们做的26个字母的操作我先给大家说一下把`````````````````````````````````````````

首先 在 tc 的输出界面 先打印一行 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
                                                         input deleted letter:j

用户输入个 j 后                                a,b,c,d,e,f,g,h,i,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
                                                           input deleted letter:a

                                                         b,c,d,e,f,g,h,i,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
                                                         input deleted letter: 输入0后退出界面,回到编程窗口


 

我录的歌 http://1680279./ 我现在打不开了????
2005-04-09 12:07
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
恩,很遗憾,我下午还要去上课,只能很不负责任的和你说看3-4楼的贴子,其实我自己都没看.不过既然别人写了你就必需看看,1是尊重别人的劳动成果2也可以从中吸取经验.

等下午回来如果你还希望我能解答的话我一定会尽自己的一份薄力的.

淘宝杜琨
2005-04-09 12:08
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
以下是引用神vLinux飘飘在2005-4-9 12:08:07的发言: 恩,很遗憾,我下午还要去上课,只能很不负责任的和你说看3-4楼的贴子,其实我自己都没看.不过既然别人写了你就必需看看,1是尊重别人的劳动成果2也可以从中吸取经验. 等下午回来如果你还希望我能解答的话我一定会尽自己的一份薄力的.
好的,你先去上课````` 我会看别人给我回复地````` 谢谢你了`````哈```````` 链表我用着有点儿迷``````不知道怎么回事,我昨天做了一下午,也没做出来```````` 是不是苯啊`````

我录的歌 http://1680279./ 我现在打不开了????
2005-04-09 12:15
快速回复:大家帮我看看 26个字母删除的操作,怎么只能删除一个呀``???
数据加载中...
 
   



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

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