单链表头插,尾插

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct node
{
int data;
struct node *pNext;
};

void insertTail(struct node *pH,struct node *new)
{
struct node *p=pH;
int counter=0;

while(NULL != p->pNext)
{
p=p->pNext;
counter++;
}

p->pNext=new;
pH->data=counter+1;
}

void insertHeader(struct node *pH,struct node *new)
{
new->pNext=pH->pNext;
pH->pNext=new;
pH->data=+1;
}

struct node *createNode(int data)
{
struct node *p = (struct node *)malloc(sizeof(struct node));
if(NULL == p)
{
printf("malloc error ! \n");
return NULL;
}

memset(p,‘\0‘,sizeof(struct node));

p->data=data;
p->pNext=NULL;

return p;
}

int main()
{
struct node *pHeader;
struct node *p,*p1,*p2;

pHeader=createNode(0);

insertHeader(pHeader,createNode(8));
insertTail(pHeader,createNode(1));
insertTail(pHeader,createNode(2));
insertTail(pHeader,createNode(3));
insertTail(pHeader,createNode(4));

printf("counter %d \n",pHeader->data);

printf("data %d \n",pHeader->pNext->data);
printf("hello world ! \n");
return 0;
}

原文地址:https://www.cnblogs.com/zhangjianrong/p/11625202.html

时间: 2024-10-13 00:51:23

单链表头插,尾插的相关文章

单链表 头插 尾插 遍历 删除

#include <stdio.h>#include <stdlib.h>#include <string.h> struct node{ int data; struct node *pNext;}; void insertTail(struct node *pH,struct node *new){ struct node *p=pH; int counter=0; while(NULL != p->pNext) { p=p->pNext; counte

单链表 头插 尾插 遍历

#include <stdio.h>#include <stdlib.h>#include <string.h> struct node{ int data; struct node *pNext;}; void insertTail(struct node *pH,struct node *new){ struct node *p=pH; int counter=0; while(NULL != p->pNext) { p=p->pNext; counte

线性表的链式存储之单链表的尾插法

对单链表进行遍历.查找.插入.删除等操作,最终效果如下: 相关C代码如下: /*线性表的链式存储之单链表的尾插法*/ #include <stdio.h> #include <stdlib.h> #include <malloc.h> /*定义变量*/ typedef int DataType; typedef struct node{     //定义链表结点数据结构 DataType data; struct node * pNext; }NODE; typedef

单链表的尾插,头插,遍历,查找和插入

单链表的基本结构 function Node(val,next){ this.val = val; this.next = next || null; } 1.链表的创建 a.尾插法,就是正常的尾部顺序插入,从数组创建链表 function tailCreateList(aSrc){ var head = new Node(); pHead = head; aSrc.forEach((item) => { var node = new Node(item); pHead.next = node;

【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。

建立源文件,命名为:Slist.cpp. #include"Slist.h" int main() {     Test();     system("pause");     return 0; } 建立头文件,命名为:Slist.h. #ifndef __SLISH_H__ #define __SLIST_H__ #include<iostream> using namespace std; typedef int DataType; class S

[PHP] 数据结构-单链表头插法PHP实现

1.创建头结点 2.创建新结点 3.新结点next指向头结点next 4.头结点next指向新结点 <?php class Node{ public $data; public $next; } //头创建一个链表 $linkList=new Node(); $linkList->next=null;//头结点 for($i=1;$i<=10;$i++){ $node=new Node(); $node->data="aaa{$i}";//创建新结点$node

基于单链表的操作

单链表 功能设计 1从首元结点开始输出数据域即p->data直到p->next=NULL.typedef struct Node 定义一个链式存储的单链表Node *为结构体指针类型例如对于单链表Lp=L-〉next通过p->data 访问该元素的数据值. 2creatlist(linklist *H) 从空表开始每次读入数据生成新结点将读入的数据存放到新结点的数据域中然后将新结点插入到当前链表的表头结点之后直至读入结束位置为止. 3Leng(linklist *H ) 在单链表中整个链

《数据结构》2.3单链表(single linked list)

1 #include <stdio.h> 2 int main(void) 3 { 4 //定义节点 5 typedef struct node 6 { 7 datatype data; 8 struct node *next; 9 }LNode,*LinkList; //LNode是节点类型,LinkList是指向LNode类型节点的指针类型 10 LinkList H; //定义头指针变量 11 12 //建立单链表(时间复杂度均为O(n)) 13 //逆序建立单链表(头插法) 14 Li

Java带头节点单链表的增删融合以及是否有环

带头节点单链表 1.优势: 1)当链表为空时,指针指向头结点,不会发生null指针异常 2)方便特殊操作(删除第一个有效节点或者插入一个节点在表头) 3)单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会. 4)代码更加简单易懂 2.相关操作 1)建立单链表 即建立一个头结点 static class Entry<T> { T data; // 链表节点的数据域 Entry<T>