数据结构C++,线性表的头插法、尾插法建立链表

#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;
}

在学校电子阅览室给手机充电,顺便敲了敲生疏的代码。:)

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38827988/article/details/101166796