线性链表

原创 2015年07月09日 14:05:45
<span style="font-size:24px;">
#include<stdio.h>
#include<malloc.h>
typedef struct nnode{
int data;
struct nnode* link;}node;

node* create_list(int n);
void printf_list(node *p_head);
void insert_node(node *p_head,int val_data);
void add_node(node *p_head,int val_data);
void delete_node(node *head,node *p_head);

int main()
{
	node *head;
	head=create_list(4);
	printf_list(head);
	add_node(head,4);
	printf_list(head);
	insert_node(head->link,0);
	printf_list(head);
	delete_node(head,head->link->link);
	printf_list(head);
	return 0;
}

//create an n nodes list
node* create_list(int n)
{
	int i;
	node *head,*p,*q;		//if no head,we cann't return the adress of list head
	head =(node *)malloc(sizeof(node));
	p=head;
	p->data=0;
	for(i=1;i<n;i++)
	{
		q=(node *)malloc(sizeof(node));
		p->link=q;
		p=q;
		p->data = i;

	}
	q->link=NULL;
	return head;
}

//printf list which head is p_head
void printf_list(node *p_head)
{
	while(p_head->link != NULL)
	{
		printf("%d ",p_head->data);
		p_head=p_head->link;	
	}
	printf("%d\n",p_head->data);
}

//insert a node after p_head->link
void insert_node(node *p_head,int val_data)
{
	node *p;
	p=(node *)malloc(sizeof(node));
	p->data=val_data;
	p->link=p_head->link;
	p_head->link=p;
}

//add anode in the list which head is p_head
void add_node(node *p_head,int val_data)
{
	node *p;
	p=(node *)malloc(sizeof(node));
	while(p_head->link!=NULL)
		p_head=p_head->link;
	p_head->link=p;
	p->data=val_data;
	p->link=NULL;
}

//delete a node from list head in address p_head
void delete_node(node *head,node *p_head)
{
	while(head->link != p_head)
		head=head->link;
	head->link=head->link->link;
	free(p_head);
}</span>

相关文章推荐

线性链表的建立、查找与删除

  • 2013年07月06日 13:55
  • 1KB
  • 下载

线性链表 链式存储 操作代码

  • 2012年03月22日 19:28
  • 5KB
  • 下载

数据结构C语言版线性链表的12个基本操作

线性链表的12个基本操作 分别是:构造 销毁 清空      判空  表长 取元      定位  前驱 后继      插入 遍历;在此为了好记我分别二字短语三三结合 ,接下来会一一解释。 头文件和...

数据结构线性链表

  • 2007年07月15日 17:40
  • 402KB
  • 下载

线性链表的实现

  • 2017年03月06日 22:04
  • 2KB
  • 下载

java数据结构(一)——线性链表

与C++类似java数据结构的线性表中也有顺序表和线性表。但是顺序表有几个缺点:1.插入删除操作不方便。2.存储空间必须连续,当表较大时无法申请到足够大的连续存储空间。所以,本文介绍链表结构。    ...
  • h9f3d3
  • h9f3d3
  • 2016年06月01日 12:57
  • 199

线性链表的实现

  • 2012年10月18日 14:03
  • 64KB
  • 下载

线性链表课件(经典呢!)

  • 2009年08月28日 02:06
  • 93KB
  • 下载

数构线性链表ADT

typedef struct LNode { // 结点类型 ElemType data; struct LNode *next; }*Link, *Position; typedef...

线性链表的实现(c语言)

  • 2012年10月22日 09:25
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线性链表
举报原因:
原因补充:

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