首页 > 编程语言 > 详细

单链表(C语言)基本操作

时间:2016-03-28 22:02:47      阅读:400      评论:0      收藏:0      [点我收藏+]

单链表:单向有序链表 最后置于空


#pragma once
#include<string.h>
#include<malloc.h>
#include<assert.h>

typedef int DataType;
typedef struct ListNode
{
	struct ListNode *_next;
	DataType _data;
}ListNode;

void PrintList(ListNode *&pHead)

{
	while(pHead)
	{
		printf("%d->",pHead->_data);
		pHead=pHead->_next;
	}
	printf("NULL\n");
}

ListNode* BuyNode(DataType x)
{
	ListNode *tmp=(ListNode *)malloc(sizeof(ListNode));
	tmp->_data=x;
	tmp->_next=NULL;

	return tmp;
}

void PushFront(ListNode *&pHead,DataType x)//首部插入
{ 
	if(pHead==NULL)
	{
		pHead=BuyNode(x);
	}
	else
	{
		ListNode *tmp=BuyNode(x);
		tmp->_next=pHead;
		pHead=tmp;
	}
}
void PopFront(ListNode *&pHead)//首部删除
{
	if(pHead!=NULL)
	{
		ListNode *del=pHead;
		pHead=del->_next;
		free(del);
	}
}
void PushBack(ListNode *&pHead,DataType x)//尾部插入
{ 
	if(pHead==NULL)
	{
		pHead=BuyNode(x);
	}
	else
	{
		ListNode *cur=pHead;
		while(cur->_next)
		{
			cur=cur->_next;
		}
		cur->_next=BuyNode(x);
	}
}
void PopBack(ListNode *&pHead)//尾部删除
{
	if(pHead==NULL)
	{
		return;
	}
	else if(pHead->_next==NULL)
	{
		free(pHead);
		pHead=NULL;
	}
	else
	{
		ListNode *cur=pHead;
		ListNode *prev=pHead;
		while(cur->_next)
		{
			prev=cur;
			cur=cur->_next;
		}
		prev->_next=NULL;
		free(cur);
	}
}

ListNode *Find(ListNode *&pHead,DataType x)//查找
{
	ListNode *cur=pHead;
	while(cur)
	{
		if(cur->_data==x)
		{
			return cur;
		}
		cur=cur->_next;
	}
	return NULL;
}

void  PopNoHead(ListNode  *pos)//删除无头单链表的非尾节点
{
	ListNode *del = pos->_next;
	assert(pos);
	pos->_data = del->_data;
	pos->_next = del->_next;
	free(del);
	del=NULL;
}

//Test.cpp

#include<stdio.h>
#include "List.h"

void Test1()//输入/出、查找
{
	ListNode *ret=NULL;
	ListNode *list=NULL;
	PushFront(list,1);
	PushFront(list,2);
	PushFront(list,3);
	PushFront(list,4);
	PushFront(list,5);

	PrintList(list);
	Find(list,4);

	PopFront(list);
	PopFront(list);
	PopFront(list);
	PopFront(list);
	PrintList(list);
}


本文出自 “花开彼岸” 博客,请务必保留此出处http://zxtong.blog.51cto.com/10697148/1757682

单链表(C语言)基本操作

原文:http://zxtong.blog.51cto.com/10697148/1757682

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!