C语言实现单链表相关操作

转载 2015年07月07日 07:52:44


//单链表相关操作

#include<stdio.h>

#include<stdlib.h>
typedef int ElemType; 


typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;

/*
//头插法建立链表
LinkList CreatList1(LinkList &la)
{
int x;
la = (LinkList)malloc(sizeof(LNode));
la->next = NULL;
scanf("%d",&x);
while(x!=9999)
{
LNode *s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = la->next;
la->next = s;
scanf("%d",&x);
}
return la;

}
*/

//尾插法建立链表
LinkList CreatList2(LinkList &la)
{
int x;
la = (LinkList)malloc(sizeof(LNode));
la->next = NULL;
LNode *s,*r=la;
scanf("%d",&x);
while(x!=9999)
{
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
scanf("%d",&x);
}
r->next = NULL;
return la;
}

//按序号查找节点
LNode *GetElem(LinkList L,int i)
{
int j = 1;
LNode *p = L->next;
if(i<1)
return NULL;
while(p&&j<i)
{
p = p->next;
j++;
}
return p;
}

/*
//按值查找表节点
LNode *LocateElem(LinkList L,ElemType e)
{
LNode *p = L->next;
while(p!=NULL && p->data!=e)
p = p->next;
return p;
}
*/

//插入节点元素
LNode *InsertElem(LinkList L,int x,int i)
{
LNode *p = GetElem(L,i-1);
LNode *s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = p->next;
p->next = s;
return p;
}

/*
//s节点插入到p节点之前
LNode *ExchangeElem(LinkList L,int i)
{
LNode *p = GetElem(L,i);
LNode *s = GetElem(L,i+1);
int temp;
s->next = p->next;
p->next = s;
temp = p->data;
p->data = s->data;
s->data = temp;
return p;
}
*/

//删除节点元素
LNode *DeleteElem(LinkList L,int i)
{
LNode *q;
LNode *p = GetElem(L,i-1);
q = p->next;
p->next = q->next;
free(q);
return p;
}

void main()
{
LinkList la;

LNode *m;


//CreatList1(la);//头插法
CreatList2(la);//尾插法

//m = GetElem(la,2);//按序号查找
//m = LocateElem(la,2);//按值查找
//printf("%d\n",m->data);

//m = InsertElem(la,88,4);//插入节点
//printf("%d\n",m->next->data);

//m = ExchangeElem(la,3);//交换相邻两元素的位置
//printf("%d,%d\n",m->data,m->next->data);

m = DeleteElem(la,4);//删除元素
printf("%d,%d\n",m->data,m->next->data);
}

单链表的基本操作c语言实现

#include #define false 0 #define ok 1//定义节点的结构 typedef struct node{ int data; struct node *n...
  • gongdileidechouzhu
  • gongdileidechouzhu
  • 2017年02月25日 16:14
  • 619

学习心得:链表的操作(C语言实现)

今天将给大家讲述链表的学习心得。学习数据结构,毋庸置疑链表必须学好,后面的栈、队列、树、图都是以链表为基础的;链表的种类很多,有单链表、双链表、循环链表、非循环链表;在此,我们以非循环单链表为例,来讲...
  • tomcmd
  • tomcmd
  • 2015年08月28日 18:11
  • 501

数据结构--单链表的基本操作(C语言实现)

数据结构--单链表的基本操作(C语言实现)     #include #include #define ERROR 0 #define OK   1...
  • qq_33609401
  • qq_33609401
  • 2016年09月27日 17:30
  • 1183

单向链表的C语言实现与基本操作

本文的主要内容目录: 一、单向链表的C语言实现 二、单向链表的基本操作 一、单向链表的C语言实现 链表作为一种基本的数据结构在程序开发过程当中经常会使用到。对C语言来说链表的实现主要依靠结构体和指...
  • TECH_PRO
  • TECH_PRO
  • 2017年04月17日 05:59
  • 1941

c语言实现链表及其基本操作

链表:        链表是一种物理储存单元上非连续、非顺序的储存结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。...
  • MBuger
  • MBuger
  • 2016年09月13日 18:18
  • 7510

学习心得:链表的操作(C语言实现)

今天将给大家讲述链表的学习心得。学习数据结构,毋庸置疑链表必须学好,后面的栈、队列、树、图都是以链表为基础的;链表的种类很多,有单链表、双链表、循环链表、非循环链表;在此,我们以非循环单链表为例,来讲...
  • lpp0900320123
  • lpp0900320123
  • 2014年03月03日 18:55
  • 56105

数据结构 - C语言版 - 单链表 所有基本操作

C语言 - 单链表 所有基本操作 #include #include #include typedef struct OLNode { int data; struct OLNode * ...
  • u012495182
  • u012495182
  • 2013年11月11日 17:51
  • 1481

C语言实现单链表(带头结点)的基本操作

我在之前一篇博客《C语言实现单链表(不带头结点)的基本操作》中具体实现了不带头结点的单链表的11种操作:如计算链表长度、初始化、创建链表、清空链表等等。但是在实际使用中,带头结点的单链表往往比不带头结...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016年03月01日 13:40
  • 5174

数据结构 单链表插入删除操作(c语言实现)

#include "stdlib.h" #include "stdio.h" typedef struct LNode{ int data; struct LNode *next; }LNo...
  • catkint
  • catkint
  • 2015年11月29日 16:46
  • 3613

数据结构之---c语言实现循环单链表操作

数据结构之---c语言实现循环单链表操作
  • u012965373
  • u012965373
  • 2015年05月15日 16:49
  • 1465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言实现单链表相关操作
举报原因:
原因补充:

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