| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1307 人关注过本帖
标题:大家好啊 有几个问题想请教大家
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#define N 100
typedef struct {
int key;
int flag;
}list;

int delete_same(list a[],int n)
{
int i,j,k=0;
for(i=1;i<n;i++)
{
for(j=i-1;j>=0;j--)
{
if(a[i].key==a[j].key)
{
a[i].flag=0;//标记置为0表示重复
k++;
}
}
}
return(n-k+1);
}

void pailie(list a[],int n,int m)
{
int i,j,k,min;
for(i=1;i<=m;i++)
{
j=0;
k=0;
min=32767;
while(j<n) //每次选择最小值
{
if(a[j].flag==-1&&a[j].key<min)
{
min=a[j].key;//min保存当前最小值
k=j;//k保存当前最小值的位置
}
j++;
}
a[k].flag=i;//排列大小
//printf("%-3d%-3d\n",k,a[k].flag);
}
}

int main()
{
list data[N];
int i,n,m;
printf("输入元素个数,不超过%d:",N);
scanf("%d",&n);
printf("输入数组元素:");
for(i=0;i<n;i++)
{
scanf("%d",&data[i].key);
data[i].flag=-1;
}
m=delete_same(data, n);//m表示当前数组中互不相同的元素个数
printf("序列:");
for(i=0;i<n;i++)
{
if(data[i].flag!=0)
printf("%-3d",data[i].key);
}
printf("\n");
pailie(data,n,m);//做静态链表的标记
printf("编号:");
for(i=0;i<n;i++)
{
if(data[i].flag!=0)
printf("%-3d",data[i].flag);
}
printf("\n");
return(0);
}


倚天照海花无数,流水高山心自知。
2006-08-08 22:48
gsc2288
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-8-9
收藏
得分:0 
看后有些~~~~~~~~~~~~~~~晕
2006-08-09 14:49
DaytonaUSA
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:3
注 册:2004-4-12
收藏
得分:0 
用於识别大括号("{}")的函数,不用递归的方法,可以尝试改造一下 :)

int quotes(const char *express)
{
unsigned long i;
unsigned long leftquote=0;
unsigned long express_len;
express_len=strlen(express);

for (i=0;i<express_len;i++) {
if (express[i]=='{') {
leftquote++;
}
if (express[i]=='}') {
if (leftquote==0) {return -1;}else{leftquote--;}
}
}
if (leftquote==0){return 0;}else{return -1;}
}

My Personal Weblog: http://www.twinbee.info
2006-08-09 16:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
看程序结合我说的思路看,可能更好受点,呵呵,写的程序很垃圾,连我自己看着也难受

倚天照海花无数,流水高山心自知。
2006-08-09 23:14
yangmingym
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-8-6
收藏
得分:0 

nuc 编的程序有没有用到C++啊 有些地方在C书上找不到

2006-08-10 08:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用yangmingym在2006-8-10 8:49:19的发言:

nuc 编的程序有没有用到C++啊 有些地方在C书上找不到

哪里,楼主你指出来一下,我学过C++,不知道会不会加点什么在里面.我查查.


倚天照海花无数,流水高山心自知。
2006-08-10 21:09
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我看一下,前两个程序,是我学数据结构时候写的,那时还没有学C++,第3个,也没有.
只有注释符不是C中的.
还有exit()之类的都是c中的,只是见的少.

倚天照海花无数,流水高山心自知。
2006-08-10 21:14
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用nuciewth在2006-8-8 22:48:31的发言:

第二题,写的不好,只能想到这样了,望各位想个好方法.

我下午没事做写了个,呵呵,我刚看了下您的程序,下面这个应该比您快些

#include "Stdio.h"
#include "Conio.h"
#include "stdlib.h"
typedef struct NODE
{
int data; /*数据成员*/
int pos; /*编号成员*/
struct NODE *next;
}node;
/*
函数入口参数:表头,刚输入数据的节点,此时还没和链表建立连接;
函数功能:查找前面节点是否有和即将插入的节点(即第二个参数)data成员相同,
如果有,返回1;如果没有,再次遍历链表,遇到节点data成员大于pt的
data成员的话,则把该节点的pos成员加1,否则把pt->pos++。
函数出口:返回是否找到与pt节点data数据一致的节点情况,找到返回1,否则返回0。
*/
int search(node *head,node *pt)
{
node *p=head;
int tag=1;
for(;p&&tag;p->data==pt->data?(tag=0,p=p->next):(p=p->next));
if(tag)for(p=head;p;(p->data)>(pt->data)?(p->pos++):(pt->pos++),p=p->next);
return (1-tag);
}
node *creat(node *head)
{
node *p=NULL,*q=NULL;
int flag=1;
puts("Input the test datas:");
while(1)
{
if((p=(node *)malloc(sizeof(node)))==NULL)exit(1);
scanf("%d",&p->data);
p->next=NULL;
if(p->data==-1)
{
p=NULL;
return head;
}
else
{
p->pos=1;
flag?(head=p,flag=0,q=head):(search(head,p)?(free(p)):(q->next=p,q=p));
}
}
}
void Print(node *head)
{
node *p=head;
while(p)
printf("%-6d",p->data),p=p->next;
p=head,putchar('\n');
while(p)
printf("%-6d",p->pos),p=p->next;
}
void Free(node **head)
{
node *p=*head;
while(*head)
p=*head,*head=(*head)->next,free(p);
}
int main(void)
{
node *head=NULL;
head=creat(head);
Print(head);
Free(&head);
getch();
return 0;
}


对不礼貌的女生收钱......
2006-08-11 19:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
动态链表和静态链表
楼主好好看看楼上的.

倚天照海花无数,流水高山心自知。
2006-08-12 19:44
快速回复:大家好啊 有几个问题想请教大家
数据加载中...
 
   



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

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