线性表用数组实现,单链表用带链表指针的结构实现。
这里数据的录入,我用随机数生成两组-99到99的两位数来填充线性表和单链表,利用冒泡排序升序排列,这样负数就都到正数前面了。分两个函数:
#include
#include
#include
#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 printf("\n将所有负值放到所有正值前面:\n"); for(i=0;i for(j=i+1;j if(st[i]>st[j]) st[i]^=st[j],st[j]^=st[i],st[i]^=st[j]; for(i=0;i printf("\n\n"); } void doByLLT()//用单链表做 { int i; LLT llist[M],*lltp=llist,*lltp2=NULL; for(i=0;i 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; }