单链表定义及创建

本文介绍了如何使用C++实现单链表的两种创建方式:尾插法和头插法。尾插法适用于构建有序链表,而头插法则在某些场景下提供便利。示例代码详细展示了创建过程,便于理解和实践。

单链表定义

typedef struct ListNode {
    int data;
    struct ListNode *next;
} ListNode,*LinkList;

尾插法创建有头结点单链表

void createListFromTail(LinkList &L,int n){
	L= new ListNode;
	L->next=NULL;
	LinkList p,r =L;
	for(int i=0;i<n;i++)
	{
		p=new ListNode;
		cin>>p->data;
		r->next=p;
		r=p;
	}
	r->next=NULL;
	}

头插法创建有头结点单链表(不常见)

void createLinkFromHead(LinkList &L,int n)
{
	LinkList p;
	L= new ListNode;
	L->next=NULL;
	for(int i=0;i<n;i++){
		p=new ListNode;
		cin>>p->data; 
		p->next=L->next;
		L->next=p;
	}
	
}

在C语言中,单链表定义创建方法如下: ### 单链表定义 单链表由节点组成,每个节点包含数据域和指针域。数据域用于存储数据,指针域指向下一个节点。可以通过如下代码定义单链表结构: ```c typedef struct Node{ int data; // data域,存储数据,需要存储什么类型数据,就定义什么类型 struct Node *next; // 定义指针域 } Node, *linkList; ``` 上述代码中定义了一个 `struct Node` 结构体,其中 `data` 是数据域,`next` 是指针域,指向 `struct Node` 类型的下一个节点。同时使用 `typedef` 为 `struct Node` 定义了别名 `Node`,为 `struct Node*` 定义了别名 `linkList` [^3]。 ### 单链表创建 #### 初始化 单链表的初始化是创建一个头结点,若头结点指针域为空,则表示空单链表。以下是单链表初始化的代码: ```c LinkList InitList() { LinkList head; // 定义指针变量 head = (Node*)malloc(sizeof(Node)); // 头指针指向分配的头结点内存空间 head->next = NULL; // 头指针指针域为空 return head; // 返回头结点地址,即头指针 } ``` 上述代码中,使用 `malloc` 函数为头结点分配内存空间,将头结点指针域置为 `NULL`,最后返回头结点的地址 [^2]。 #### 完整创建示例 以下是一个将单链表基本功能串联起来的简单小程序框架,包含了单链表定义和基本操作的调用: ```c #include <stdio.h> #include <malloc.h> #include <stdlib.h> // 定义结构体 typedef struct Node{ int data; struct Node *next; } NODE, *PNODE; // 声明各个功能函数 void main() { int b = 1, c; PNODE pHead; pHead = NULL; while (b) { system("cls"); printf("\n\n\t\t线性表之单链表的基本操作\n\n"); printf("\t\t...1 - n.链表的各种功能操作; \n"); printf("\t\t...0 退 \n"); printf("\n\t\t请选择 [0,10]: "); scanf("%d", &c); printf("\n\n"); switch (c) { case 1 - n: // 调用各种功能函数 break; case 0: b = 0; break; } if (c != 0) { printf("\n 输入然后关键字继续..."); getche(); } } system("cls"); printf("\t\t 程序!\n"); exit(-1); } // 具体的各种功能函数 ``` 该程序框架提供了一个简单的用户交互界面,用户可以选择不同的操作来对单链表进行操作 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值