发帖的时候搜索下,论坛这程序早有了,而且有很多
叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2 question:
看看行不行:
/* 输入四个正整数m、n、x和y,求出它们的最小公倍数。 */
#include <stdio.h>
#define N 4
static void Sort(int a[]);
int main(void)
{
long a[N], i, k;
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
Sort(a);
if (a[3] % a[2] == 0 && a[3] % a[1] == 0 && a[3] % a[0] == 0)
{
printf("%d\n", a[3]);
}
else if (a[3] * a[2] % a[3] == 0 && a[3] * a[2] % a[2] == 0 && a[3] * a[2] % a[1] == 0 && a[3] * a[2] % a[0] == 0)
{
printf("%d\n", a[3] * a[2]);
}
else if (a[3] * a[2] * a[1] % a[3] == 0 && a[3] * a[2] * a[1] % a[2] == 0 && a[3] * a[2] * a[1] % a[1] == 0 && a[3] * a[2] * a[1] % a[0] == 0)
{
printf("%d\n", a[3] * a[2] * a[1]);
}
else
{
printf("%d\n", a[3] * a[2] * a[1]);
}
return 0;
}
static void Sort(int a[])
{
int i, j, temp;
for (i = 0; i < N - 1; i++)
{
for (j = i + 1; j < N; j++)
{
if (a[i] > a[j])
{
temp = a[i], a[i] = a[j], a[j] = temp;
}
}
}
}
wtc下运行通过,但在C-FREE却不行
晕死我了,看楼主您的程序总是那么累...
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node *next;
}*LinkList, ListNode;
void CreateList(LinkList *headPtr, LinkList *tailPtr);
void Insert_sort(LinkList *headPtr);/*插入排序*/
void VisitList(LinkList headPtr);
int main(void)
{
LinkList newhead = NULL, newtail = NULL;
CreateList(&newhead, &newtail);
VisitList(newhead);
Insert_sort(&newhead);
VisitList(newhead);
getch();
return 0;
}
void CreateList(LinkList *headPtr, LinkList *tailPtr)
{
int newdata;
LinkList newPtr = NULL;
printf("Enter one number:\n");
scanf("%d", &newdata);
while (newdata != 0)
{
newPtr = (LinkList)malloc(sizeof(ListNode));
if (newPtr == NULL)
{
exit(1);
}
newPtr -> data = newdata;
newPtr -> next = NULL;
if (*headPtr == NULL)
{
newPtr -> next = *headPtr;
*headPtr = newPtr;
}
else
{
(*tailPtr) -> next = newPtr;
}
newPtr -> next = NULL;
*tailPtr = newPtr;
printf("Enter one number:\n");
scanf("%d", &newdata);
}
}
void Insert_sort(LinkList *headPtr)
{
LinkList prev = NULL, cur = NULL, q = NULL, prev2 = NULL;
prev=*headPtr;
while(prev)
{
cur= prev->next;
prev2=prev;
while(cur)
{
if(cur->data<prev->data)
{
prev2->next=cur->next;
if(prev==*headPtr)
{
cur->next=*headPtr;
*headPtr=cur;
}
else
{
cur->next=prev;
q->next=cur;
}
}
prev2=cur;
cur=cur->next;
}
q=prev;
prev=prev->next;
}
}
void VisitList(LinkList headPtr)
{
while (headPtr != NULL)
{
printf("%d ", headPtr -> data);
headPtr = headPtr -> next;
}
printf("\n");
}
#include"stdio.h"
#include"malloc.h"
#include <stdlib.h>
#define N 10 /*代表要处理的元素个数 可以谁使用者的意思修改*/
#define OK 1
#define OVERFLOW 0
typedef int ElemType;
typedef int status;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*LinkList;
///////////////////////////////
///////////初始化单链表
///////////////////////////////
status InitLinkList(Node **L)
{
LinkList p, q;
int i;
int k = 0;
*L=(LinkList)malloc(sizeof(Node));
if (*L==NULL)
{
printf("memory allocation failed,goodbye\n");
exit(OVERFLOW);
}
printf("请输入元素个数为%d\n",N); /*元素个数为N*/
(*L)->next = NULL;
p = (*L);
for (i = N; i > 0; i--)
{
q = (LinkList)malloc(sizeof(Node));
if (q == NULL)
{
printf("out of place");
exit(OVERFLOW);
}
scanf("%d",&(q->data));
q->next = NULL;
p->next = q;
p = q;
k++;
}
return OK;
}
///////////////////////////////
//////////对单链表的元素进行排序
///////////////////////////////
status LinkListSort(LinkList *L)
{
Node *p;
int t ;
int i=0;
while (i < (N*(N-1)/2))
{
p = (*L)->next;
while (p->next != NULL) /*N为元素个数 元素要比较N*(N-1)/2次*/
{
if (p->data > p->next->data) /*相互之间换值*/
{
t = p->data;
p->data = p->next->data;
p->next->data = t;
}
p = p->next;
}
i++;
}
return OK;
}
//////////////////////////////
////////////////删除相同的元素
//////////////////////////////
status DeleteSameElement (LinkList *L)
{
LinkList p, k;
int e;
p=(*L)->next;
k = p;
while (p != NULL)
{
e = p->data;
p = p->next;
while (p != NULL)
{
if (e == p->data) /*将相同的元素赋值为0 在下面判断如果元素值为0 释放这个接点*/
{
p->data = 0;
}
p = p->next;
}
k = k->next;
p = k;
}
return OK;
}
/////////////////////////////////////////////////////////////////
///////////////////对单链表中的元素倒置以前写的算法 太臭
//////////////////////////////////////////////////////////////////
///*status LinkListReverse(LinkList *L)
/* {
int a[N] ,i=0,count=0;
LinkList Lb;
Node *p,*q;
p=(*L)->next;
while(p!=NULL)
{
a[i++]=p->data;
p=p->next;
count++;
}
Lb=(LinkList)malloc(sizeof(Node)); /*重新建立一个单链表 将倒置后的元素放在Lb中*/
/* {
if(Lb==NULL)
{
printf("out of place");
exit(OVERFLOW);
}
Lb->next=NULL;
p=Lb;
for(i=count-1;i>=0;i--)
{q=(LinkList)malloc(sizeof(Node));
if(q==NULL)
{
printf("out of place");
exit(OVERFLOW);
}
q->data=a[i];
q->next=NULL;
p->next=q;
p=q;
}
}
p=Lb->next; /*输出倒置后的单链表*/
/*while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
return OK;
}*/
//////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
///////// 对单链表中的元素倒置
////////////////////////////////////////////////////////////////
status LinkListReverse(LinkList *L)
{
LinkList q, p, s;
p = (*L)->next;
q = p->next;
s = q->next;
p->next = NULL;
while( s->next != NULL)
{
q->next = p;
p = q;
q = s;
s = s->next;
}
q->next = p;
s->next = q;
(*L)->next = s;
return OK;
}
/////////////////////
/////////释放接点
////////////////////
status FreeLinkList(LinkList *L)
{
Node *q;
while (L != NULL)
{
q = *L;
*L = q->next;
free(q);
}
return OK;
}
////////////////////////
////////////打印出单链表
////////////////////////
status PrintLinkList(LinkList L)
{
Node *p;
p = L->next;
printf("处理之后的单链表为:");
while (p != NULL)
{
if (p->data == 0)
{
p = p->next;
continue;
}
printf("%4d",p->data);
p = p->next;
}
getchar();
return OK;
}
int main(void) /*菜单*/
{
LinkList L;
int flag;
int select;
int e=0;
while(1)
{
do{
printf("\n 1:对单链表中的元素进行排序\n");
printf("\n 2:删除单链表中相同的元素\n");
printf("\n 3:对单链表中的元素进行倒置\n");
printf("\n 4:释放单链表\n");
printf("\n 5:建立单链表\n");
printf("\n 6:退出\n");
printf("\n 请选择你要执行的语句前的数字\n");
scanf("%d",&select);
if(select==6)
flag=0;
}while (select > 6 && select < 0);
if(flag == 0)
break;
switch(select)
{
case 1:
if (e == 1)
{
LinkListSort(&L);
PrintLinkList(L);
}
else
printf("对不起!您还没建立单链表\n请先建立单链表");
break;
case 2:
if (e == 1)
{
DeleteSameElement(&L);
PrintLinkList(L);
}
else
printf("对不起!您还没建立单链表\n请先建立单链表");
break;
case 3:
if(e == 1)
{
LinkListReverse(&L);
PrintLinkList(L);
}
else
printf("对不起!您还没建立单链表\n请先建立单链表");
break;
case 4:
if (e == 1)
{
FreeLinkList(&L);
e = 0;
}
else
{
printf("对不起!您还没建立单链表\n请先建立单链表");
}
break;
case 5:
if (e == 0)
{
InitLinkList( &L);
e = 1;
}
else
{
printf("你的单链表已经建立了");
}
break;
default:
printf("对不起您选择的数字有误 请重新输入");
break;
}
}
system("pause");
return 0;
}