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

本文共 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

你可能感兴趣的文章
《软件工程》总结——第八章
查看>>
第一册:lesson ninety-nine。
查看>>
LR性能测试结果样例分析
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
java-泛型
查看>>
table显示json数据传递
查看>>
GDOI2015的某道题目
查看>>
c# CLI托管工程开启调试c++库工程代码
查看>>
Xerces链接错误原因之/Zc:wchar_t-设置不一致
查看>>
2019牛客暑期多校训练营(第一场)-E(DP)
查看>>
Flash 中与 JS 的通信
查看>>
Android中的WebView
查看>>
JsBridge "Uncaught TypeError: Cannot call method 'callHandler' of undefined", source
查看>>
LeetCode【110. 平衡二叉树】
查看>>
Mybatis 与hibernate
查看>>
第一章:python基础语法| 字符编码| 条件语句...
查看>>
CSS 2. 盒模型|浮动
查看>>
双十一电商打折套路解析
查看>>
JavaWeb之Servlet: ServletConfig 与 ServletContext
查看>>
【学习笔记】ES6标准入门
查看>>