求c语言单链表合并主函数(方法已经写出)

求c语言单链表合并主函数(方法已经写出),第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我已经把方颤睁法写出来了,但是不会主函数,求高手帮忙填下

程序如下:

#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++

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8258762.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存