#include <stdio.h>
#include <stdlib.h> #define ElemType int
#define Status int
#define OK 0
#define ERROR -1 typedef struct
{
ElemType data;
struct Node *next;
}Node; typedef struct Node *LinkList; /*定义LinkList*/ Status GetElem(LinkList L, int i, ElemType *e)
{
int j=1;
LinkList p; /*声明一指针p*/
p = L->next;
while (p && j<i)
{
p = p->next;
++j;
}; if (i <= j || !p)
return ERROR; *e = p->data; return OK;
} /*初始条件: 顺序线性表已经存在, 1<=i<=ListLength(L).*/
/*操作结果: 这里指在链表第i个元素之前插入元素e, L的长度加1*/
/*元素前后定义:箭头指向的方向为前*/
Status ListInsert(LinkList L,int i, ElemType e)
{
LinkList p,s;
p = *L;
int j=1;
while(p && j<i)
{
p = p->next;
++j;
} if(!p || j >= i)
return ERROR; /*第i个节点不存在*/ s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->next = p->next;
p->next = s; return OK;
} /*初始条件: 顺序线性表已经存在, 1<=i<=ListLength(L).*/
/*操作结果: 这里指删除链表的第i个元素, 并使用e返回该元素值,L的长度减1*/
Status ListDelete(LinkList L, int i, ElemType *e)
{
LinkList p, q;
p = *L;
int j=1 while(p && j<i)
{
p = p->next;
++j;
} if(!p || j >= i)
return ERROR; /*第i个节点不存在*/ q = p->next;
e = q->data;
p->next = q->next;
free(q); /*让系统回收次节点,释放内存*/
return OK;
} void CreateListHead(LinkList *L, int n)
{
LinkList *p;
int i;
srand(time(0)); /*初始化随机数种子*/
*L = (LinkList)malloc(sizeof(Node));
L->next = NULL; /*先建立一个带头节点的单链表*/
for(i=0; i<n; i++)
{
p = (LinkList)malloc(sizeof(Node)); /*生成新节点*/
p->data = rand()%100+1;
p->next = (*L)->next;
(*L)->next = p;
}
} void CreateListTail(LinkList *L, int n)
{
LinkList *p, r;
int i;
srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
r = *L; /*将链表尾指针赋给r*/
for(i=0; i<n; i++)
{
p = (LinkList)malloc(sizeof(Node)); /*生成新节点*/
p->data = rand()%100+1;
r->next = p;
r = p; /*将当前的新节点定义为表尾的终端节点*/
}
r->next=NULL;
} Status ClearList(LinkList *L)
{
LinkList p,q;
p = (*L)->next; while(p)
{
q = p->next;
free(q);
p = q;
}
(*L)->next = NULL;
return OK;
} int main()
{
LinkList *mylist;
CreateListTail(mylist, 16);
printf(" %d ", mylist->next->data);
}

  

C单链表操作的更多相关文章

  1. 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏

    数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...

  2. 数据结构之 线性表---单链表操作A (删除链表中的指定元素)

    数据结构上机测试2-1:单链表操作A Time Limit: 1000MS Memory limit: 4096K 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据 ...

  3. c语言实现--带头结点单链表操作

    可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...

  4. C++ 单链表操作总结

    第一.单链表的定义和操作 #include <iostream> using namespace std; template <typename T> struct Node ...

  5. c语言实现--不带头结点的单链表操作

    1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样. 2,不带头结点单链 ...

  6. C语言,单链表操作(增删改查)(version 0.1)

    这天要面试,提前把链表操作重新写了一遍.备份一下,以备不时之需. 希望有人能看到这篇代码,并指正. // File Name : list.h #include "stdafx.h" ...

  7. 【数据结构与算法】单链表操作(C++)

    #include <stdio.h> #include <malloc.h> /*单链表节点定义*/ typedef struct LNode { int data; //da ...

  8. C++单链表操作

    #include <stdio.h> typedef struct _Node{   int value;   _Node *next;}Node; void AddNodeTail(No ...

  9. 数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)

    数据结构上机测试2-2:单链表操作B Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删 ...

随机推荐

  1. poj1061-青蛙的约会-(贝祖定理+扩展欧几里得定理+同余定理)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:132162   Accepted: 29199 Descripti ...

  2. 挨批记后记--Jmeter环境安装

    挨批之后的艰难挣扎: 首先说所要造的数据是性能测试任务的创建,而创建任务还需要先创建场景,场景则又牵涉到jmx文件... 经过搜索后发现jmx文件通过jmeter生成,所以软件的安装就开始了.. jm ...

  3. waffit防火墙检测

    Waffit是一款Web应用防火墙检测工具,检测防火墙保护的站点是在渗透测试中非常重要的一步.如果没有对WAF进行配置,有时候可能存在漏洞.在渗透测试和风险评估中分析WAF也是非常重要的.通过编码攻击 ...

  4. svn git 必须理解的概念

    不都是SCM代码管理嘛,有很大区别么?很多svn老鸟都是抱着这样的心态去学习git,然后无一幸免地陷入“查阅过很多资料,依然掌握不好”的困境,至少我们团队是这样的. 网上的资料确实已经很多了,却没有把 ...

  5. 2.5、CDH 搭建Hadoop在安装(设置Cloudera Manager数据库)

    步骤5:设置Cloudera Manager数据库 Cloudera Manager Server包含一个可以为自己创建和配置数据库的脚本.该脚本可以: 创建Cloudera Manager Serv ...

  6. ss源码学习--工作流程

    ss的local端和server端的工作流程相似,因此复用了TCPRelay类和TCPRelayHandler类. 两端均是使用TCPRelay类监听连接,并使用TCPRelayHandler类处理请 ...

  7. sqlserver 当前时间减去30天

    参考 https://zhidao.baidu.com/question/750666819064717772.html select dateadd(dd,-30,getdate()) from 表 ...

  8. poj1984(带权并查集)

    题目链接:http://poj.org/problem?id=1984 题意:给定n个farm,m条边连接farm,k组询问,询问根据前t3条边求t1到t2的曼哈顿距离,若不可求则输出-1. 思路:类 ...

  9. avcodec_decode_video2少帧问题

    使用libav转码视频时发现一个问题:使用下面这段代码解码视频时,解码中会不时丢掉几帧. ){ ret = avcodec_decode_video2(video_dec_ctx, vframe, & ...

  10. f5备份与还原

    1.需备份主机和备机的配置 2.1)备份到f5 恢复: 2)备份到本地