链表|遍历|插入|

原创 2011年10月23日 18:18:37

参考资料 LinkedListBasics.pdf

一、遍历

当遍历一个链表时,测试条件为current!=NULL,移动步骤为current=current->next 。

int Length(struct node* head)
{
	printf("---- iterate list ----\n");
	int count = 0;
	struct node* current = head;
	while(current != NULL)
	{
		printf("data =%d ;\n",current->data);
		count ++;
		current = current->next;
	}
	return count;
}

二、从Head后插入

最简单的方法是在头节点的末尾插入节点,但是它的插入顺序跟它的排列顺序刚好相反。呵呵,如果你不介意的话,这个不失为一种简单易行的方法。

void Push(struct node** headRef, int data){
	struct node* newNode = (struct node*)malloc(sizeof(struct node));
	newNode->data = data;
	newNode->next = *headRef;
	*headRef = newNode;
}

struct node* AddAtHead() {
struct node* head = NULL;
int i;
for (i=1; i<6; i++) {
Push(&head, i);
}
// head == {5, 4, 3, 2, 1};
return(head);
}

三、从链表末尾插入

先要找到末尾的节点~

void PushTail(struct node** headRef, int data){

	struct node* newNode = (struct node*)malloc(sizeof(struct node));
	newNode->data = data;
	newNode->next = NULL;
	//special case for lenght 0
	if(tail == NULL)
	{
		printf("tail == NULL");
		*headRef = newNode;
	}
	else
	{
		struct node* tail = *headRef;
		// Locate the last node
		while(tail->next != NULL)
		{
			tail = tail->next;
		}
		tail->next = newNode;
	}
}


四、注意:“指针的拷贝” 和 “指针的指针”

指针的拷贝:void PushHead(struct node* headRef, int data) 这样插入节点,对原链表无任何影响。

指针的指针:void PushHead(struct node** headRef, int data)





相关文章推荐

单链表的插入删除 遍历等操作

  • 2011年12月05日 13:33
  • 2KB
  • 下载

用结构体实现链表的创建、遍历、结点插入、结点删除

#include using namespace std; struct node //结点结构 { int data ; node * next; }; ...

C++单链表的操作(创建,删除,打印,遍历,插入)

其实C++中单链表中对数据的操作很好理解的,只要熟悉这个过程

双向链表(插入,删除,追加,正反向遍历,查找。。。)

双向链表(插入,删除,追加,正反向遍历,查找。。。) #include #include using namespace std; class List { public: List(void)...

数据结构 线性链表的创立及其基本操作初始化、遍历、销毁、判空、求表长、删除、插入等

最近写了个数据结构的单链表,其中包括十来个基本操作算法,包括了创建单链表、删除、插入、定位、遍历等基本的操作。在VS上运行了一下,可以通过,感觉还不错,和大家分享一下! 我是建立了一个C++项目,在项...
  • wys_NO1
  • wys_NO1
  • 2016年10月24日 21:30
  • 416

单链表的遍历、插入、删除

单链表由一个个的节点组成,节点由两个部分组成:数据域和指针域。 数据域就是存储这个节点的数据,这没什么说的。指针域存放的指针指向的是下一个结点,正是因为指针域的存在,把存在内存不连续区域里的...

(C语言)链表的创建、遍历、插入和删除

(C语言)链表的创建、遍历、插入和删除C语言链表的创建遍历插入和删除 链表结构定义 基本功能实现 边界条件判断和错误情况处理 总结链表结构定义struct Node { int value; ...

单向链表的创建、遍历、求长、判存、判空、插入、删除、查找(按位置或元素)、合并

linkedlist.h #include "stdafx.h" #include "iostream" using namespace std; typedef struct LNode { i...

单循环链表的初始化、插入、删除、遍历、查找

#include #include #include typedef struct CLinkList { int data; struct CLinkList *next; }node;...
  • LeoCfyb
  • LeoCfyb
  • 2013年02月28日 01:02
  • 1923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表|遍历|插入|
举报原因:
原因补充:

(最多只允许输入30个字)