帮忙改下这道题,是不是算法有些问题啊!谢谢.
帮忙改下这道题,是不是算法有些问题啊!谢谢
各位大峡快一点,我等着救命!
谢谢!
#include<stdio.h>
#include<stdlib.h>
typedef char Datatype
typedef struct dnode
{
Datatype data;
struct dnode * prior,* next;
}dlinklist;
dlinklist *initilize()
{
char c;
DNODE *head,*p,*q;
head=NULL;
r=NULL;
c=getchar();
while(ch!='\n')
{
p=(linklist *)malloc(sizeof(linklist));
p->data=ch;
if(head==NULL)
{head=p;
q=p;}
else
q->next=p;
p->prior=q;
q=p;
c=getchar();
}
p->next=head;
head->prior=p;
return (head);
}
main()
{
dlinklist *p,*s,*q;
dlinklist *initilize()
s=initilize();
int j,m;j=1;
p=head;
p->prior=q->next;
q=p->prior;
while(p!=q || p->next!=q || n!=0)
{if(n=2m)
{
while(j!=((n/2)-1))
{q=q->prior;j++;}
if(p->data==q->data)
{ putchar(p->data);
putchar(q->data);}
else return (1)
p=p->next;
q=p->prior;}
}
if(p==q)
putchar(p->data);
else if(p->next==q)
{ putchar(p->data);
putchar(q->data);
}
return 0;
}
问题点数:60、回复次数:8Top
1 楼lovemotion(舒心小格子)回复于 2004-04-01 08:51:40 得分 0
刚刚忘把题贴上去了!:)
题目如下;
判断循环双向链表表示的字符环是否是中心对称的,若不是给出标志,若是给出一个对称实例。
谢谢!Top
2 楼DragonBill(用户中文昵称------静观其变,以静制动)回复于 2004-04-01 09:02:12 得分 0
里面的error太多了...Top
3 楼lovemotion(舒心小格子)回复于 2004-04-01 09:20:39 得分 0
是啊!自己越改错误越多了!所以帮忙改一下了哦!
谢谢!Top
4 楼bky2003(beyond)回复于 2004-04-01 10:05:52 得分 0
实在 不知道谁写的这么菜的程序, 我顺手从书上抄了一个,在Turbo C2.0调试通过.
程序运行时,输入一个字符串,如果字符串对称,显示 字符串 is
不对称显示 字符串 is not
程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef char Data;
typedef struct node{
Data dat;
struct node *next,*prior;
}NODE,*dlinklist;
void check(dlinklist p){
if(p==NULL){
printf("cannot allocat\n");
exit(0);
}
}
dlinklist init(char *pc){
dlinklist head=NULL,p=head,q=head;
while(*pc){
if(head==NULL){
head=(dlinklist)malloc(sizeof(NODE));
check(head);
head->dat=*pc++;
head->next=NULL;
head->prior=NULL;
p=q=head;
}
else{
p=(dlinklist)malloc(sizeof(NODE));
check(p);
p->dat=*pc++;
p->next=head;
head->prior=p;
q->next=p;
p->prior=q;
q=p;
}
}
return head;
}
void main(){
char str[50],*pc;
dlinklist head,p,q;
int result=0;
printf("Input a string:");
scanf("%s",str);
head=init(str);
for(p=head,q=head->prior;p->dat==q->dat;p=p->next,q=q->prior){
if(p->next==q||p->next==q->prior){
result=1;
break;
}
}
if(result)
printf("%s is ",str);
else
printf("%s is not ",str);
}
Top
5 楼bky2003(beyond)回复于 2004-04-01 10:08:55 得分 0
顺便说一下,上面申请的空间没释放,
如果你想拿100分,把释放的部分补上.Top
6 楼lovemotion(舒心小格子)回复于 2004-04-01 14:42:44 得分 0
上一楼,谢谢你,傻傻问一句,“上面申请的空间没释放,
如果你想拿100分,把释放的部分补上.”什么意思?Top
7 楼bky2003(beyond)回复于 2004-04-14 09:45:48 得分 60
好久没看了,今天看看得分才发现,抱歉.
现在补上:
#include<stdio.h>
#include<stdlib.h>
typedef char Data;
typedef struct node{
Data dat;
struct node *next,*prior;
}NODE,*dlinklist;
void check(dlinklist p){
if(p==NULL){
printf("cannot allocat\n");
exit(0);
}
}
dlinklist init(char *pc){
dlinklist head=NULL,p=head,q=head;
while(*pc){
if(head==NULL){
head=(dlinklist)malloc(sizeof(NODE));
check(head);
head->dat=*pc++;
head->next=NULL;
head->prior=NULL;
p=q=head;
}
else{
p=(dlinklist)malloc(sizeof(NODE));
check(p);
p->dat=*pc++;
p->next=head;
head->prior=p;
q->next=p;
p->prior=q;
q=p;
}
}
return head;
}
/*释放链表*/
void release(dlinklist head){
dlinklist p=head,q;
while(p!=NULL){
q=-p->next;
free(p);
p=q;
}
}
void main(){
char str[50],*pc;
dlinklist head,p,q;
int result=0;
printf("Input a string:");
scanf("%s",str);
head=init(str);
for(p=head,q=head->prior;p->dat==q->dat;p=p->next,q=q->prior){
if(p->next==q||p->next==q->prior){
result=1;
break;
}
}
if(result)
printf("%s is ",str);
else
printf("%s is not ",str);
release(head);
}Top
8 楼lovemotion(舒心小格子)回复于 2004-04-14 18:26:20 得分 0
谢谢,呵呵,高手就是高手,谢谢Top




