创建单链表

还记得创建单链表的这些代码还是大学时候写过,现在再重新写一写,为面试做准备吧:

创建单链表的两种形式:头插法和尾插法

// 演示创建2种单链表的方式
// 【C++基础】单链表.cpp

#include "stdafx.h"
#include <iostream>
using namespace std;
struct link {
	int data;
	link *next;
};

//头插法建立单链表
link *creatLink_head(link *head) {
	link *node;
	int tmpData;
	cout << "输入元素,以空格分隔:";
	do {
		cin >> tmpData;
		if (tmpData == 0)
			break;

		node = new link;
		node->data = tmpData;
		node->next = head->next;
		head->next = node;

	} while (node->data != 0);
	return head->next;
}

//尾插法建立单链表
link *creatLink_tail(link *head) {
	link *node, *tail = head;
	int tmpData;
	cout << "输入元素,以空格分隔:";
	do {
		cin >> tmpData;
		if (tmpData == 0)
			break;
		node = new link;
		node->data = tmpData;
		tail->next = node;
		tail = node;
		tail->next = NULL;
	} while (tmpData != 0);
	return head->next;
}

//遍历输出
void printLink(link *p){
	while (p != NULL) {
		cout << p->data << "  ";
		p = p->next;
	}
	cout << endl;
}
int main()
{
	link *head, *p_head, *p_tail;
	head = new link;
	head->next = NULL;
	//方式1:头插法创建单链表
	//p_head = creatLink_head(head);
	//printLink(p_head);

	//方式2:尾插法创建单链表
	p_tail = creatLink_tail(head);
	printLink(p_tail);

    return 0;
}

原文地址:https://www.cnblogs.com/xuelisheng/p/9225810.html

时间: 2024-10-28 10:39:48

创建单链表的相关文章

c语言创建单链表

//创建单链表 #include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct Student STU; //用typedef 新定义结构体名字为 STU:struct Student //定义时不能直接用STU{ char name[20]; float score; STU* next;// 定义指向结构体的指针}; int main(){ STU a, b, c, *P, *head; 

单链表的插入伪算法和用C语言创建单链表,并遍历

非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p->pNext = q; // q保存了那一块结点的地址.q是一个指针变量,存放那个结点的地址.q->pNext = r; 第二种表示方法:q->pNext = p->pNext; // q的指针域指向p后面一个结点p->pNext = q; // p的指针域指向q 删除非循环单链表结点

单链表的创建算法

单链表的创建算法 当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表. 单链表的示意图如下: Head指针为单链表的头指针,单链表L:L既是单链表的名字,也是其头指针.链表中的最后一个结点的指针域定义为空指针(NULL). 单链表的定义: struct Node { ElemType data; struct Node *next; }; typedef struct Node LNode; typedef struct Node *LinkedList; 单链表有带头结点和不带头结

给定数组,创建(带头节点)的单链表(头插法、尾插法)

一般有两种常用的方法来建立单链表:头插法与尾插法. (1)头插法:每次将新申请的节点插在头节点的后面: 简单来说,就是把新加进的元素放在表头后的第一个位置: 首先,让新节点的next指向头节点之后:然后,让表头的next指向新节点. (2)尾插法:每次将新申请的节点插在终端节点的后面. #include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node *next; } NODE; /

02 单链表

线性表之链式存储---单链表 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 // 数据结构 6 typedef struct node 7 { 8 int data; 9 struct node *next; 10 }linkList; 11 12 // 创建单链表,并初始化 13 linkList *linkList_init(void) 14 { 15 linkList *l

单链表的基本操作

直接上代码 #include<stdio.h> #include<stdlib.h> //结构定义 typedef struct node{ int data; //数据域 struct node *next; //指针域 }LinkList; //创建单链表 void CreateLinkList(LinkList *L){ L->next = NULL; } //尾插法 void Insert_Tail(LinkList *L,int x){ LinkList *p; p

03 单链表逆置

单链表逆置 方法: <1>断开第一个数据节点和第二个数据节点的链接 <2>将后面的节点通过头插法的思想插在头节点后面 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 // 数据结构 6 typedef struct node 7 { 8 int data; 9 struct node *next; 10 }linkList; 11 12 // 创建单链表,并

单链表的排序

单链表的逆序: 由于链表不同于数组一样,所以将排好序的结点放到另一个链表中去,然后再由头指针指向该链表. 1 void Link::Sort(Node * Head) { 2 3 Node * Root = NULL; // 头指针,作为一个新链表指针,将所有结点链接到这里 4 Node * Tail = NULL; // 尾指针 5 Node * pMin = NULL; // 作为待操作链表结点中最小结点的前驱 6 Node * min = NULL; // 最小结点的指针 7 Node *

D_S 单链表的基本操作

//  main.cpp #include <iostream> using namespace std; #include "Status.h" #include "LinkList.h" int main() { LinkList L; int n,i; ElemType e; InitList(L); cout<<"\nL="; ListTraverse(L); cout<<"\n请设置将向线性