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

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

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

main() {struct a *head,*p,*q,*s; 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"); */

q=p=head; printf("\ninput deleted letter:"); scanf("%c",&ch); while(ch != '0') { q=p=head;

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

{ q->next=p->next; free(p) ; } else printf("can't find it"); }

q=p=head; printf("\n"); while (p->next != NULL)

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

q=p=head;

printf("\n2:input deleted letter"); fflush(stdin); scanf("%c",&ch); }

p=head; while(p->next != NULL) {printf("%c",p->lk); p=p->next;}

q=p=head; printf("\ninput insert letter"); /*insert */ scanf("%c",&ch); 这句为什么没执行啊``````为什么插入只能插一个```急`` fflush(stdin); while(ch != '0') { q=p=head; while(p->lk < ch && p->next != NULL) { q=p; p=p->next;} if(p==head) { s=(struct a *) malloc(len); s->lk=ch; s->next=head; q=p=s; }

else { if (p->lk == ch) printf("inserted is exist"); else {s=(struct a *) malloc(len); s->lk=ch; s->next=p; q->next=s; q=p=head;} }

while(p->next != NULL) {printf("%c",p->lk); p=p->next;} p=head; printf("\n2insert a letter");

scanf("%c",&ch); fflush(stdin);

}

}

搜索更多相关主题的帖子: 字符 
2005-04-10 09:11
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
删除操作没问题`````

就是那个 scanf 没执行`````

我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 09:15
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
我的插入操作也有问题```

大家给修修`

我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 09:20
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
现在就剩下插入操作的了```````

那个scanf 函数的好了```

我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 09:26
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 

怎么没人啊```` #include <stdio.h> #define len sizeof(struct a) #include <malloc.h>

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

main() {struct a *head,*p,*q,*s; 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"); */

q=p=head; printf("\ninput deleted letter:"); scanf("%c",&ch); while(ch != '0') { q=p=head;

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

{ q->next=p->next; free(p) ; } else printf("can't find it"); }

q=p=head; printf("\n"); while (p->next != NULL)

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

q=p=head;

printf("\n2:input deleted letter"); fflush(stdin); scanf("%c",&ch); }

p=head; while(p->next != NULL) {printf("%c",p->lk); p=p->next;}

q=p=head; printf("\ninput insert letter"); /*insert */ 就看这个插入的```````````````````插入的判断条件大家看看错没(蓝字是) fflush(stdin); scanf("%c",&ch);

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

if(p==head) { s=(struct a *) malloc(len); s->lk=ch; s->next=head; p=s; }

else { if (p->lk == ch) { printf("inserted is exist"); } else {s=(struct a *) malloc(len); s->lk=ch; s->next=p; q->next=s; p=head;}

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

while(p->next != NULL) {printf("%c",p->lk); p=p->next;} p=head; printf("\n2insert a letter");

fflush(stdin); scanf("%c",&ch);

}

}


我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 10:34
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
大家都扫墓去了,怎么还会有人来?
今天是没人的了.

我也没心情做了,那个累呀.如果需要的话把题目搬上来,我帮你做完就得了

淘宝杜琨
2005-04-10 15:46
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
首先谢谢你` 别人做的毕竟不是自己做的```` 只会骗了自己````` 我现在就是不知道插入 判断条件是什么 a-->b-->c-->d-->e-->f-->---------------z 如果 是 while(p->lk < ch && p->next != NULL) { q=p; p=p->next;} 就得考虑 b-->c-->d-->e-->-------->z 现在我不知道该怎么插入的条件(即while的) 我的程序没 头节点 麻烦大家想想,能有什么解决的方法```````````

我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 16:03
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
有志气!

你想在链表的哪里插入你的单元?
表头还是表尾?

还有,我想知道你是不是理解了链表是如何插入的.一个单链表插入会遇到几种情况?

淘宝杜琨
2005-04-10 16:17
guitarliukai
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2004-12-5
收藏
得分:0 
插入的位置是不固定的`````由用户输入

比如说把

这时的线形表是
a--&gt;b--&gt;c--&gt;------&gt;z

如果插入 c 的话就不能插

如果插入a 的话,也不能





在用户删除了多个字母后,如

e--&gt;f--&gt;g

就剩下这三个  了```

这时在插入的话,如果输入 a ,插入后为 a--&gt;e--&gt;f--&gt;g

                             如果输入z,  插入后为 e--&gt;f--&gt;g--&gt;z

我录的歌 http://1680279./ 我现在打不开了????
2005-04-10 16:40
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我想可以这样去实现你这个程序

1.判断要插入的单元的字符ch在链表中是否已经存在,如果存在则不插入
这个可以用遍历查询函数来作

struct character *search(char ch)
{
struct character *p;

    p=head;
    while(p-&gt;next!=NULL)
        if(p-&gt;c == ch) return p;
        else p=p-&gt;next;
    return NULL;
}

这个函数的作用我想你自己都可以看出来吧,找到链表中有一个单元的字符与ch相同
则返回这个单元的地址,如果找不到则返回NULL

于是我们可以通过这个函数来判断是否要插入的单元的字符已经存在于链表之中.



2.如果要插入的单元的字符不存在链表当中,当然我们可以进行插入操作了.

思想如下:

(A.)
插入的字符是链表的第一个单元(也就是说插入'a'的情况)
b-&gt;c-&gt;d-&gt;...插入a成为a-&gt;b-&gt;....
那么我们就给a=malloc(...);分配空间之后head=a;a-&gt;next=b;就了帐了.
这种情况是最最简单的.

(B.)
插入的字符是链表的非第一个单元
a-&gt;b-&gt;d....插入c成为a-&gt;b-&gt;c-&gt;d
这个时候就比较麻烦了.

我们要在b之后插入,首先我们现得遍历查询找到b所在的位置(用search()函数)
然后
c=malloc(...);
temp=b-&gt;next;
b-&gt;next=c;
c-&gt;next=temp;

temp是临时操作指针.


在网络上我也只能讲得这样了,剩下的只能靠你自己去悟了.

淘宝杜琨
2005-04-10 17:17
快速回复:我的26个字符的插入来给修改修改把````
数据加载中...
 
   



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

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