C单链表操作
#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单链表操作的更多相关文章
- 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏
数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...
- 数据结构之 线性表---单链表操作A (删除链表中的指定元素)
数据结构上机测试2-1:单链表操作A Time Limit: 1000MS Memory limit: 4096K 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据 ...
- c语言实现--带头结点单链表操作
可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...
- C++ 单链表操作总结
第一.单链表的定义和操作 #include <iostream> using namespace std; template <typename T> struct Node ...
- c语言实现--不带头结点的单链表操作
1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样. 2,不带头结点单链 ...
- C语言,单链表操作(增删改查)(version 0.1)
这天要面试,提前把链表操作重新写了一遍.备份一下,以备不时之需. 希望有人能看到这篇代码,并指正. // File Name : list.h #include "stdafx.h" ...
- 【数据结构与算法】单链表操作(C++)
#include <stdio.h> #include <malloc.h> /*单链表节点定义*/ typedef struct LNode { int data; //da ...
- C++单链表操作
#include <stdio.h> typedef struct _Node{ int value; _Node *next;}Node; void AddNodeTail(No ...
- 数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)
数据结构上机测试2-2:单链表操作B Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删 ...
随机推荐
- EF 1
安装框架: 在NuGet中安装ef框架,命令:Install-package EntityFramework 数据迁移: 在程序包管理器控制台,执行语句. 初始化: 1.Enable-Migratio ...
- css3文本和颜色
1.文本阴影text-shadow 语法 text-shadow:X-Offset Y-Offset blur color; X-Offset:表示阴影的水平偏移距离,其值为正值时阴影向右偏移,反之向 ...
- 搭建GitLab+Jenkins
1. Jenkins and GitLab Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务. GitLab是一个代码仓库,用来管理代码. 两者结合起来,就可以实现开发者提交代 ...
- phpexcel 导入超过26列时的解决方案
$highestColumn = $sheet->getHighestColumn(); // 取得总列数 ++$highestColumn; for ($row = 5; $row <= ...
- 安装三代组装canu、smartdenovo、wtdbg及矫正软件Racon、Nanopolish的安装
1)三代组装软件 ------------------------------------------------------------------canu--------------------- ...
- 手机不弹toast解决方法
经常遇到华为手机不弹toast的问题 华为手机--设置--通知栏和状态栏--通知中心--自己的项目 用户可能允许通知关了 就收不到提示了 在手机的设置 -> (某些手机前面可能 ...
- 动态代理 JDK动态代理 CGLIB代理
代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法.实际执行的是被代理类的方法. 而AOP,是通过动态代理实现的. 一.简单来说: JD ...
- Push API
[Push API] The Push API gives web applications the ability to receive messages pushed to them from a ...
- asp.net之发送邮件1
/// <summary> ///发邮件给用户 /// </summary> /// <param name="userEmail">用户的邮件 ...
- 安装 Laravel 遇到问题?你需要更新 composer.json 文件
转载自 https://9iphp.com/web/laravel/laravel-install-fail-update-composer.html 在使用最新版 Composer 安装 Larav ...