单链表 头插 尾插 遍历

#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;
}

void traversal(struct node *pH)
{
struct node *p=pH;

while(NULL != p->pNext)
{
p=p->pNext;
printf("data : %d \n",p->data);

}
}

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);

traversal(pHeader);

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

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

时间: 2024-10-12 15:26:39

单链表 头插 尾插 遍历的相关文章

单链表 头插 尾插 遍历 删除

#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

「C语言」单链表/双向链表的建立/遍历/插入/删除

最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合,一种面向过程的MVC的感觉. 而这一切的基础就在于对链表的创建.删除.输出.写入文件.从文件读出...... 本篇文章在于巩固链表的基础知识(整理自<C语言程序设计教程--人民邮电出版社>第十章),只对链表的概念及增删改查作出探讨,欢迎指教. 一.链表结构和静态/动态链表 二.单链表的建立与遍历

单链表头插,尾插

#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

[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

单链表的创建与遍历

#include "stdafx.h" #include <malloc.h> typedef struct NODE { int data; struct NODE* pNext; }NODE,*PNODE; PNODE Create_list(void); void Traversal_list(PNODE pHead); int _tmain(int argc, _TCHAR* argv[]) { PNODE pHead = NULL; pHead = Create_

单链表中创建与遍历

import java.util.Stack; public class Reverse{ class LNode{ int data; LNode next; public LNode(int data){ this.data=data; } } public static void main(String []args){ Reverse r = new Reverse(); for(int i=1;i<=10;i++){ r.add(i); } r.print(r.head); } pub