#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. jq select 一些操作

    添加option $("#ID option").each(function(){if($(this).val()==111){$(this).remove();}}); 移除op ...

  2. RepeatMasker

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

  3. java 集合 Se HashTreeSet

    Set接口  Set是Collection的子接口,与List相对 Set集合中的元素的特点是1,无序性 2,无下标3,无重复的元素 Set是个接口,所以无法直接创建对象,要依赖它的实现类来创建对象  ...

  4. fiddler模拟timeout超时场景

    fiddler模拟网络超时: 用fiddler模拟网络请求超时 最近要测试程序对cgi 请求超时的兼容,所以就需要模拟超时,第一个想到的就是fiddler工具,说一下具体的做法: Rules -> ...

  5. 解题(LevenshteinInstance--Levenshtein距离)

    题目描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符.编辑距离 ...

  6. C# winform 支持html5的 控件

    OpenWebKitSharp WebKit.net c#winform中使用WebKit传递js对象实现与网页交互 分类: .NET开发2013-08-18 23:55 2496人阅读 评论(1)  ...

  7. WAS 添加数据源

    一.创建安全性别名认证 1.资源-全局安全性-JAVA认证和授权服务-J2C认证数据 2.新建 3.输入别名,这里后面加IP末尾.输入用户名.密码. 4.点击确定.保存. 二.创建数据源连接配置 1. ...

  8. WebSphere Application Server中manageprofiles的使用

    转自 https://www.cnblogs.com/lgfeng/archive/2013/02/21/2921215.html ---------------------------------- ...

  9. JS散度

    https://blog.csdn.net/weixinhum/article/details/85227476

  10. 207. Course Schedule(Graph; BFS)

    There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...