
问题描述:
程序如下:
#include <stdio.h>
#include <stdlib.h>茄李岁
typedef struct Node{
int data
struct Node *next
}Lnode,*LinkList
LinkList CreatLinlList()
{
LinkList L
Lnode *s,*r
int x
int flag
L=r=NULL
scanf("%d",&x)
while(x!=flag)
{
s=(Lnode *)malloc (sizeof (Lnode))
s->data = x
if(L==NULL)
L=s
else
r->next=s
r=s
scanf("%d",&x)
}
if(r!=NULL)
r->next=NULL
return L
}
void deleteLinkList( LinkList L)
{
Lnode *p,*q,*r/*p头指针 q指针 r尾指针*/
p=L->next/*p指向第一个结点*/
if(p==NULL)
return
while(p->next)
{
q=p
while(q->next)
if (q->next->data==p->扰烂data)
{
r=q->next
q->next=r->next
free(r)
}
else
q=q->next
}
p=p->next
}
LinkList merge(LinkList A,LinkList B)
{
LinkList C
Lnode *p,*q,*s,*r
p=A->next
q=B->next
C=A
C->next=r=NULL
free(B)
while(p&&q)
{
if(p->data<q->data)
{
s=p
p=p->next
}
else
{
s=p
q=q->next
}
r->next=s
r=s
}
if(p==NULL)
p=q
while(p)
{
s=p
p=p->next
r->next=s
r=s
}
}
void PrintList(Lnode*h)
{Lnode*p
p=h->next
if(p==NULL)
printf("ist is NULL!\n")
else
{printf("\t")
do
{printf("\t%c",p->data)
p=p->next
}
while(p!=NULL)
printf("\t\n")
}
}
main()
{
}
解析:
LinkList a, b, c
printf("building a\n")
a = CreatLinlList()
printf("building b\n")
b = CreatLinlList()
printf("a is\n")
PrintList(a)
printf("b is\n")
PrintList(b)
c=merge(a,b)
printf("the merge is\n")
PrintList(c)
deleteLinkList(a)
deleteLinkList(b)
deleteLinkList(c)
应该把CreatLinlList()改为
LinkList CreatLinlList()
{
LinkList L
Lnode *s,*r
int x
int lenint flag
L=r=NULL
printf("input length:")
scanf("%d",&len)
scanf("%d",&x)
while(len-- != 0) while(x!=flag)
{
s=(Lnode *)malloc (sizeof (Lnode))
s->data = x
if(L==NULL)
L=s
else
r->next=s
r=s
scanf("%d",&x)
}
if(r!=NULL)
r->next=NULL
return L
}
你看这个应该满足要求吧。我把三陵哗种循环方式都用上了:#include<stdio.h>
#include<math.h>
int isprime(int n)
{
int i,t
if(n==2)
return 1
if(n%2==0 || n<手睁2)
return 0
for(i=3,t=(int)sqrt(n)i<=ti+=2)
{
if(n%i==0)
return 0
}
return 1
}
void main()
{
int i,a,n
i=0
do
{
printf("Input an integer (>=1):")
scanf("%d",&a)
if(a>尺薯行=1)
break
}while(++i<3)
if(i==3) exit(0)
printf("prime submultiples:\n")
i=1
n=0
while(i<=a)
{
if(a%i==0)
if(isprime(i))
{
printf("%d ",i)
n++
if(n%10==0)
printf("\n")
}
i++
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)