博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表基本操作
阅读量:4308 次
发布时间:2019-06-06

本文共 1189 字,大约阅读时间需要 3 分钟。

单链表结构:

typedef struct node

{

  int data;

  struct node *next;

}node;

typedef struct node *LinkList;

/*创建单链表,将新的节点插入到链表的尾部*/

createList(LinkList L, int n)

{

  LinkList p,r;  //p节点用来接收插入的元素,r是尾节点

  int i;

  srand(time(0));

  L=(LinkList)malloc(sizeof(node));

  r=L->next;  //r指向L的尾部

  for(i=0;i<ni++)

  {

    p=(LinkList)malloc(sizeof(node));

    p->data=rand()%100+1;

    r->next=p;  //r指向P

    r=p;  //将r指向新的尾节点

  }

  r->next=NULL;

  return 0;

}

//get the element in the location i

GetElem(LinkList L, int i, int *e)
{
LinkList p; //定义一个指向节点的指针
p=L->next; //p指向链表的第一个节点
int j=1;
while(p&&j<i)
{
p=p->next; //如果P不为空(没有到链表尾部)或者计数器仍然没有到i则p就往前一步
j++;
}
if(j<i||!p)
return 0;
*e=p->data;
return 0;
}

//链表插入,将e插入链表的第i个位置

void ElemInsert(LinkList L, int i, int e)
{
LinkList p,s;
int j=1;
//首先找到
p=L->next;
while(p&&j<i)
{
p=p->next;
j++;
}
//生成一个新节点
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
}

//链表删除,删除第i+1个节点

void ElemDelete(LinkList L, int i, int e)
{
LinkList p,q;
int j=1;
p=L->next;
while(p&&j<i)
{
p=p->next;
j++
}
//考虑一些可能出错的情况
q=p->next;
p->next=q->next;
e=q->data;
free(q); /很重要
}

 

转载于:https://www.cnblogs.com/HIT-wyy-BJTU/archive/2013/05/16/LinkList.html

你可能感兴趣的文章
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
常浏览的博客和网站
查看>>
Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
查看>>
iOS在Xcode6中怎么创建OC category文件
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>
reRender属性的使用
查看>>
href="javascript:void(0)"
查看>>
h:panelGrid、h:panelGroup标签学习
查看>>
f:facet标签 的用法
查看>>
<h:panelgroup>相当于span元素
查看>>
java中append()的方法
查看>>
必学高级SQL语句
查看>>
经典SQL语句大全
查看>>