| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1921 人关注过本帖
标题:[求助]请版主帮忙看看这个问题
只看楼主 加入收藏
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 

这条题我已经全部改好了。由于时间的关系。我不加注释了。慢慢看就看的明白的。 #include <stdio.h> #include <malloc.h> typedef struct node *point; struct node { int data; point next; };

void print(point head)//输出链表 { point p; p=head->next; while(p != NULL) { printf("%d -> ",p->data); p=p->next; } printf("NULL\n"); }

void revers(point head)//链表逆转置 { point p,q,r; p=head->next; q=head->next; r=q->next; if(p==NULL || q==NULL) printf("该链表无须转置。"); p->next=NULL; p=q; while(r->next) { q=r; r=r->next; q->next=p; p=q; } r->next=p; head->next=r; }

point Insert(point p,int x)//按升序插入数据,有重复数据 { point head, q,r; head = p; q = p->next; while(q != NULL && q->data<x) { p=p->next; q=q->next; } r=(struct node *)malloc(sizeof(struct node)); if(!r) printf("分配失败"); r->data=x; r->next=NULL; if(q == NULL) p->next = r; else { r->next=q; p->next = r; } return head; }

point creat()//任意顺序输入数据,建立升序链表 { int x; point p; point head;

head=(struct node *)malloc(sizeof(struct node)); head->next= NULL; if(!head) printf("分配失败/n"); p=head; printf("请输入数字:"); scanf("%d",&x); while(x!=0) { head=Insert(head,x); fflush(stdin);//在此加上清流函数 printf("请输入数字:"); scanf("%d",&x); } printf("您输入的数据为: "); print(head); return head; }

void Delet(point head,int x)//删除所有x { int i=0; point p; point q; point r; p=head; q=head->next; r=NULL; while(q != NULL) { if(q->data==x) { p->next=q->next; q->next = NULL; free(q); i = 1; break; } else { p=q;q=q->next; } } if(i==0) printf("输入的数不存在。"); else { printf("删除后链表变成:"); print(head); } }

void choose(point head) { int x; char grade; printf("a. 插入一个数据\n"); printf("b. 删除一个数据\n"); printf("c. 将该链表逆转置\n"); printf("d. 退出程序\n"); printf("请选择操作:\n"); grade=getchar(); if (grade=='a'||grade=='A') { printf("请输入要插入的数据:"); scanf("%d",&x); Insert(head,x); printf("插入后链表变成:"); print(head); choose(head); } else if (grade=='b'||grade=='B') { printf("请输入要删除的数据:"); scanf("%d",&x); Delet(head,x); printf("删除后链表变成:"); print(head); choose(head); } else if (grade=='c'||grade=='C') { printf("逆转置前链表为:"); print(head); revers(head); printf("逆转置后链表为:"); print(head); } else if (grade=='d'||grade=='D'); else { printf("输入错误,请重新选择:/n"); choose(head); } }

void main() { point head; head=creat(); choose(head); }


生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-10-11 11:25
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
不好意思,我是写完了整体调试的.以后一定注意. 谢谢激情依旧和fire77.

我的征途是星辰大海
2005-10-12 14:56
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
    不用客气。 我职责所在。最近真的没什么时间看大家的帖子。非常抱歉。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-10-19 07:14
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
struct node-----------定义的一个结构类型
{
int data;
point next;
}Node;------------定义的一个叫Node的结构体

等效于

struct {
int data;
point next;
}Node;

struct node
{
int data;
point next;
};
node Node;

再举个例子
struct node
{
int data;
point next;
}
Node1,Node2,Node3,*p;
这是定义了3个结构类型都为node的不同结构体Node1,Node2,Node3, (而p是一个指针,没有特殊含义。应该为p是一个指针类型,可以用来定义对象)

[此贴子已经被作者于2006-4-18 13:57:03编辑过]


我的征途是星辰大海
2005-10-20 14:07
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
再举个例子 struct node { int data; point next; }Node1,Node2,Node3,*p; 这是定义了3个结构类型都为node的不同结构体Node1,Node2,Node3, 而p是一个指针,没有特殊含义。 你好象错了吧。你这样定义p后。就可以用p来定义对象了。定义出来的对象就是指针类型的。你可以上机试试。我记得我以前经常这样用.

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-10-20 14:23
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
我错了。定义出来的的确是指针类型的。一时糊涂啊。多谢版主。 struct 结构体名 { 成员表列 }变量名表列; 以下3种情况等价 1。结构体变量.成员名 2。(*p).成员名 3。p->成员名

我的征途是星辰大海
2005-10-20 16:27
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
我基础很差。。。。有的时候很简单的问题都不会。你上面的那问题我刚好知道而已。惭愧!

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-10-21 07:08
fire77
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2005-9-19
收藏
得分:0 

我好久没来了,呵呵,你们解答的太好了,我完全的明白!谢谢激情和SKY!!


2005-11-06 16:27
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
    我晕死了。高程应该过不了。他出了用例图我不会看。还有出信息安全题

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-11-08 10:55
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
明年我也去试试啊,呵呵

我的征途是星辰大海
2005-11-11 15:01
快速回复:[求助]请版主帮忙看看这个问题
数据加载中...
 
   



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

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