#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. Python之路 - Socket实现QQ聊天

    Python之路 - Socket实现QQ聊天 介绍

  2. RPM安装命令总结

    RPM安装命令总结 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用 ...

  3. python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式

    一.生成器 1.1 生成器:就是(python)自己用代码写的迭代器,生成器的本质就是迭代器. 1.2 生成器函数 def func1(x): x += print() yield x print() ...

  4. JQuery 基本知识

    一.简介 JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+,  ...

  5. html -引入其他html页面

    其他页面html为:ip.html 主页面代码 <body> <div id="ip"></div> </body> <scr ...

  6. RepeatMasker

    1.简介 RepeatMasker是一款基于Library-based,通过相似性比对来识别重复序列,可以屏蔽序列中转座子重复序列和低复杂度序列(默认将其替换成N).提供有在线服务.RepeatMas ...

  7. Real Time Render 4

    [Real Time Render 4] 1.Radiometry(辐射测试) deals with the measurement of electromagnetic(电磁) radiation( ...

  8. yum被锁定:Another app is currently holding the yum lock; waiting for it to exit…

    yum被锁定无法使用,错误信息截图如下: 解决方法:rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了

  9. JSF web.xml的各类参数属性配置

    出处:http://www.cnblogs.com/zxpgo/articles/2570175.html 感谢作者的分享!! ———————————————————————————————————— ...

  10. Jenkins 传递自定义的参数

    1.同一个job之间,不同的shell之间传递参数 注意:如果是job参数化构建自定义的参数,可以在job的不同shellj间引用,但是不能改变他的值供后面的shell使用   job在执行时会针对所 ...