阅读背景:

4.考研-数据结构-单链表的建立(使用尾插法和头插法)

来源:互联网 

假设有N个元素的数据,利用尾插法和头插法建立单链表

#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct node {
	int data;
	struct node *next;
}node,*LinkedList;
/*
尾插法建立单链表
*/
LinkedList createListR(LinkedList A, int a[], int n) {//要改变的变量使用引用型
	LinkedList s, r;//s指向新申请的节点,r指向B的终端节点(最后的节点)
	LinkedList head = A;
	head = (LinkedList)malloc(sizeof(node));
	head->next = NULL;
	r = head;
	for (int i = 0; i < n;i++) {
		s = (LinkedList)malloc(sizeof(node));
		s->data = a[i];
		r->next = s;
		r = r->next;
	}
	r->next = NULL;
	return head;
}
/*
头插法建立单链表
*/
LinkedList createListF(LinkedList B,int a[],int n) {
	LinkedList s;//s指向新申请的节点
	LinkedList head = B;
	head = (LinkedList)malloc(sizeof(node));
	head->next = NULL;
	for (int i = 0; i < n;i++) {
		s = (LinkedList)malloc(sizeof(node));
		s->data = a[i];
		//下面这两行代码是头插法的关键部分
		s->next = head->next;
		head->next = s;
	}

	return head;
}
/*
展示单链表
*/
void showList(LinkedList head) {
	LinkedList t = head->next;
	while (t!=NULL) {
		cout << t->data << " ";
		t = t->next;
	}
}
int main()
{
	cout << "程序开始:" << endl;
	int a[] = {1,2,3,4};
	//拿到数组中元素的个数
	int size = sizeof(a) / sizeof(int);
	//cout << size << endl;
	//尾插法建立单链表
	LinkedList A=NULL,B=NULL;
	LinkedList Ahead= createListR(A,a,size);
	cout << "尾插法:" << endl;
	showList(Ahead);
	cout << "\n头插法:" << endl;
	LinkedList Bhead = createListF(B,a,size);
	showList(Bhead);
	int f;
	cin >> f;
    return 0;
}

#include "stdafx.h"



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: