数据结构(C语言) 请大家帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:32:46
1.有一算法
typedef struct LNode
{ int data;
strcut LNode *next;
}*LinkList;
int fun(Linklist &p, intx)
{ int flag=1;
Linklist q,r,s;
s=(LinkList)malloc(sizeof(Lnode));
s->data=x;
s->next=NULL;
r=p;
if(!p)
{p=s;
flag=-1;
}//if
//S1;
while(r&&flag==1)
{ q=r;
if(r->data==x)
{r->data*=x;
flag=0;
}
r=r->next;
}//while
//S2:
if(flag==1)
{ q->next=s;
}//if
return flag;
}
当函数返回值为-1,1时,分别表示什么含义?S1与S2之间的程序段是什么功能?(另外麻烦解释下//S1 //S2 //if//while 什么意思 我认为既然//表示解释语句,应该对程序不起作用,但是程序很明显起作用了)
2.设a[1....2n]中存储某自然数序列,试设计算法 (只写算法)
(1)SortOdd(int *p,int m)
//把a[1],a[3],...a[2n-1]按升序排序,P指向a[1]
(2)SortEven(int *p int m)
//把a[2],a[4],...a[2n]按降序排列,P指向a[1]
(3)int GetPair(int *p,int m)
//获得相等对总数,并返回,P指向a[1]
//例如假设a[1]=5 a[2]=5 a[3]=1 a[4]=0 则a[1]与a[2]是一个相等对,a[3],a[4]不是相等对

#include <stdio.h>
#include <stdlib.h>
#define N 7
void initArray(int *p)
{
int i;
for(i=0;i<2*N+1;i++) {
*(p+i) = 100-i;//Just some initial values, can be any value
}//for

}//initArray

void printArray(int *p)
{
int i;
for(i=0;i<2*N+1;i++) {
printf("%d ",*(p+i));
}//for
printf("\n");
}//printArray

void sortOdd(int *p, int m) //I'm not quit sure why you need m as a parameter.
{
int i,j,temp;
for(i=1;i<2*N+1;i=i+2) {
for (j = 1; j<2*N+1; j=j+2) {
if (*(p+i)<*(p+j)) {
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
};//if
}//for
}//for

};//sortOdd

int main(int argc, char **argv)
{
int a[2*N+1];
initArray(a);
printArray(a);
sortOdd(a,0);
printArray(a);
return 0;
};//main

你要的第四题的第一小