2.3 创建线性表(尾插操作)

#include <iostream>
#include <stdlib.h>

typedef struct LNode {
	int data;
	LNode *next;
}*LinkList;

int main() {
	int a[6] = { 23,43,35,21,54,65 };
	//初始化单链表
	LinkList L;
/*
	L = (LinkList)malloc(sizeof(LNode));
	if (L!=NULL)L->next = NULL;
*/
	bool InitLinkList(LinkList & L);
	InitLinkList(L);

	//使用尾插法创建单链表
	/*
		1.申请一个空间
		2.p指向该空间
		3.给该空间的data赋值
		4.p指向新申请的空间
		5.s->next=p
	*/
/*
	LNode *p,*s;
	s = L;
	for (int i = 0; i < 6; i++)
	{
		p = (LNode *)malloc(sizeof(LNode));
		if (p != NULL) {
			p->data = a[i];
			p->next = NULL;
			s->next = p;
			s = p;
		}
	}
*/
	LinkList CreateLinkList(LinkList L, int data[], int length);
	CreateLinkList(L, a, 6);


	//输出单链表
	void PrintLinkList(LinkList L);
	PrintLinkList(L);
	return 0;
}

//初始化链表
bool InitLinkList(LinkList &L) {
	L = (LinkList)malloc(sizeof(LNode));
	if (L == NULL) return false;
	L->next = NULL;
	return true;
}

//尾插操作实现
LinkList CreateLinkList(LinkList L,int data[],int length) {
	LNode* p, * s;
	s = L;
	for (int i = 0; i < length; i++)
	{
		p = (LNode*)malloc(sizeof(LNode));
		if (p != NULL) {
			p->data = data[i];
			p->next = NULL;
			s->next = p;
			s = p;
		}
	}
	return L;
}

//输出链表函数
void PrintLinkList(LinkList L) {
	LNode* p;
	p = L->next;
	while (p != NULL)
	{
		printf("%d\t", p->data);
		p = p->next;
	}
}
posted @ 2022-03-15 11:57  千树line  阅读(94)  评论(0)    收藏  举报