#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
struct LNode{
int data;
struct LNode *next;
};
//创建随机数组
void createArr(int a[]){
srand(1);
for(int i=0;i<N;i++){
a[i] = rand()%11;
}
printf("%s","数组建立完成!\n");
printf("%s","数组为:\n");
}
//输出数组
void printArr(int a[]){
for(int i=0;i<N;i++){
printf("%-2d",a[i]);
}
printf("\n");
}
//输出链表
void printList(LNode *l){
LNode *p;
p = l->next;
while(p){
printf("%-2d",p->data);
p = p->next;
}
printf("\n");
}
//头插法建立链表
void createListH(LNode *&l,int a[],int n){
printf("%s","开始头插法建立链表!\n");
LNode *p;
l = (LNode*)malloc(sizeof(LNode));
l->next = NULL;
for(int i=0;i<n;i++){
p = (LNode*)malloc(sizeof(LNode));
p->data = a[i];
//关键代码
p->next = l->next;
l->next = p;
}
printf("%s","头插法建立链表完成!\n");
}
//尾插法建立链表
void createListT(LNode *&l,int a[],int n){
printf("%s","开始尾插法建立链表!\n");
LNode *p,*q;
l = (LNode*)malloc(sizeof(LNode));
l->next = NULL;
q = l;
for(int i=0;i<n;i++){
p = (LNode*)malloc(sizeof(LNode));
p->data = a[i];
//关键代码
q->next = p;
q = q->next;
}
q->next = NULL;
}
int main(){
int a[N];
createArr(a);
printArr(a);
LNode *l;
createListH(l,a,N);
printList(l);
createListT(l,a,N);
printList(l);
return 0;
}
在学校电子阅览室给手机充电,顺便敲了敲生疏的代码。:)