nnpc.net
当前位置:首页 >> 单链表的初始化算法描述 >>

单链表的初始化算法描述

这个是创建单链表表头的一个函数: LinkList CreatNullListlink(void) // 函数名,不带参数,返回链表头head(LinkList 类型) { LinkList head;//定义一个链表, head=(LinkList)malloc(sizeof(listnode)); //给这个链表分配内存控件 head->next=Null;

以下是C语言描述,单链表的定义:struct sNode{ ElemType data; struct sNode* next; }; 单链表的初始化只需把单链表的表头置为空即可:void InitList(struct sNode** HL) { *HL=NULL; }

#include <stdio.h> #include <stdlib.h>//定义链表typedef struct node { int data; struct node * next; }NODE; NODE *head,*tail;//链表初始化void Init(){ head = NULL; tail = NULL;}//输入元素void CreateList(int n) { NODE *tmp; int i,num; scanf("%d

int Length(PLNode head)/*求长度*/ { int n=0; PLNode p; p=head->next; while(p) { n++; p=p->next; } 从头节点开始,遍历链表,如果未到链表末尾,则长度加一,如此反复,知道链表结尾

LNode为链表的节点,需要实际的内存空间.LinkList为LNode* 类型的指针,用来指向链表中的某个节点.区别在于:一个是实际的链表节点,一个是指向某个节点的指针.

初始化,插入,查找都有了 ,代码是我自己写的 并且调试正确 struct LinkTest{ int data; struct LinkTest *pNext; }; void InLinkStart(int data,struct LinkTest * &pStart,struct LinkTest * &pEnd) { struct LinkTest *NewData = (LinkTest *)malloc(sizeof(

一个结构 typedef int dt;struct link{ struct node { node* next; dt data; }; void init()//初始化 { head = (node*) malloc(sizeof(node)); //构造一个head head->next = null; //尾部设置为nullptr; } void insert(dt data) //插入 (要插入的数据) { node* temp =

写个链表

因为有时你需要改变指针本身的值.例如,删除第一个节点的函数,你需要将head本身也改变掉:void DeleteFirst( LinkList *head ) { LinkList old_head = (*head); *head = (*head)->next; delete old_head; } 如果不想使用二级指针,也可以使用引用:void DeleteFirst( LinkList &head ) { LinkList old_head = head; head = head->next; delete old_head; }

其实这是一个与C语言参数传值的问题,C语言规定实参变量对形参变量的参数传递是值传递,在执行函数调用时形参变量值的改变,并不影响主调函数的实参变量.如:int x,y;void fun(int a, int b){ b=b+a;}void main(){ x=1; y=2; fun(x, y); .. //此时仍然x=1; y=2;}但是,函数写成如下形式void InitList(LinkList *head);可以实现引用传递参数的功能.在需要函数内部修改链表头指针时,用该形式可以解决该问题.而void InitList(LinkList head) 不可以在函数内部修改链表头指针.

网站首页 | 网站地图
All rights reserved Powered by www.nnpc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com