数结构编程题,求大佬帮忙,C语言的?
线性表用数组实现,单链表用带链表指针的结构实现。
这里数据的录入,我用随机数生成两组-99到99的两位数来填充线性表和单链表,利用冒泡排序升序排列,这样负数就都到正数前面了。分两个函数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10//最大数据个数
typedef struct llist
{
int n;
struct llist *next;
}LLT;
void doByST();//用顺序表做
void doByLLT();//用单链表做
int main()
{
srand(time(NULL));//利用随机数(正负两位数-99~99)填充顺序表及单链表
doByST();
doByLLT();
}
void doByST()//用顺序表做
{
int i,j,st[M];
printf("顺序表中的数据:\n");
for(i=0;i<M;i++) st[i]=((rand()%2)?1:-1)*(rand()%90+10),printf("%d ",st[i]);
printf("\n将所有负值放到所有正值前面:\n");
for(i=0;i<M;i++)
for(j=i+1;j<M;j++)
if(st[i]>st[j])
st[i]^=st[j],st[j]^=st[i],st[i]^=st[j];
for(i=0;i<M;i++) printf("%d ",st[i]);//打印结果
printf("\n\n");
}
void doByLLT()//用单链表做
{
int i;
LLT llist[M],*lltp=llist,*lltp2=NULL;
for(i=0;i<M-1;i++) llist[i].next=&llist[i+1];//单链表
llist[i].next=NULL;
printf("\n单链表中的数据:\n");
while(lltp!=NULL)
{
lltp->n=((rand()%2)?1:-1)*(rand()%90+10);
printf("%d ",lltp->n);
lltp=lltp->next;
}
printf("\n将所有负值放到所有正值前面\n");
lltp=llist;
while(lltp!=NULL)
{
lltp2=lltp->next;
while(lltp2!=NULL)
{
if(lltp->n>lltp2->n)
lltp->n^=lltp2->n,lltp2->n^=lltp->n,lltp->n^=lltp2->n;
lltp2=lltp2->next;
}
lltp=lltp->next;
}
lltp=llist;//--打印结果
while(lltp!=NULL) printf("%d ",lltp->n),lltp=lltp->next;
}