C代码实现非循环单链表,

直接上代码。

 # include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
//C代码实现非循环单链表 //定义链表结点
typedef struct Node{
int data;//数据域
struct Node* pNext;//指针域
}* PNODE,NODE; //函数声明
PNODE initHead(void);
void init(PNODE pHead) ;
bool isEmpty(PNODE pHead);
void traverse(PNODE pHead);
int length(PNODE pHead) ;
bool insert(PNODE pHead,int pos,int num);
bool delete_linked(PNODE pHead,int pos); int main(void)
{
//确定一个非循环链表只需要一个头结点
PNODE pHead;
//初始化头结点
pHead = initHead();
//给链表赋值
init(pHead);
//遍历
traverse(pHead) ;
printf("\n");
printf("链表的结点为%d个\n",length(pHead));
// insert(pHead,3,99);
delete_linked(pHead,);
traverse(pHead) ;
return ;
} //向链表中某个位置增加一个结点 pos>=1
bool insert(PNODE pHead,int pos,int num)
{
int i = ;
PNODE tem = pHead;
//让tem指向第POS-1个节点
while(NULL!=tem&&i<pos-) {
tem = tem->pNext;
i++;
}
if(i>pos-||NULL==tem){
return false;
}
//分配一个新的结点
PNODE pNode = (PNODE)malloc(sizeof(NODE));
if(NULL==pNode){
printf("动态分配内存失败!\n");
exit(-);
}
pNode->data = num;
//第一种方式
// pNode->pNext = tem->pNext;
// tem->pNext = pNode;
// 第二种方式
PNODE p = tem->pNext;
tem->pNext = pNode;
pNode->pNext = p;
return true;
} //删除指定位置的值
bool delete_linked(PNODE pHead,int pos)
{
int i = ;
PNODE tem = pHead;
//让tem指向第POS-1个节点
while(NULL!=tem&&i<pos-) {
tem = tem->pNext;
i++;
}
if(i>pos-||NULL==tem){
return false;
}
PNODE p = tem->pNext;
tem->pNext = p->pNext;
free(p);
return true;
} //链表长度
int length(PNODE pHead)
{
int count = ;
PNODE tem = pHead->pNext;
while(NULL!=tem){
count++;
tem = tem->pNext;
}
return count;
} //初始化头结点
PNODE initHead(void)
{
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(NULL==pHead){
printf("申请内存失败\n");
exit(-);
}
return pHead;
} //给链表赋值
void init(PNODE pHead)
{
int num;//结点的值
int len;//结点的个数
printf("请输入结点的个数len= ");
scanf("%d",&len);
int i;
PNODE tem = pHead;
for(i = ;i<len;i++){
PNODE node = (PNODE)malloc(sizeof(NODE));
if(NULL==node){
printf("申请内存失败\n");
exit(-);
}
printf("请输入第%d个节点的值 ",i+);
scanf("%d",&num);
node->data = num;
tem->pNext = node;
node->pNext = NULL;
tem = node;
}
} //判断链表是否为空
bool isEmpty(PNODE pHead)
{
return (NULL==pHead->pNext);
} //遍历链表
void traverse(PNODE pHead)
{
if(isEmpty(pHead)){
printf("链表为空\n");
return;
}
PNODE tem = pHead->pNext;
while(NULL!=tem){
printf("%d ",tem->data);
tem = tem->pNext;
}
}

C代码实现非循环单链表的更多相关文章

  1. 简单约瑟夫环的循环单链表实现(C++)

    刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...

  2. PTA 循环单链表区间删除 (15 分)

    本题要求实现带头结点的循环单链表的创建和单链表的区间删除.L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于m ...

  3. C语言版本:循环单链表的实现

    SClist.h #ifndef __SCLIST_H__ #define __SCLIST_H__ #include<cstdio> #include<malloc.h> # ...

  4. c语言循环单链表

    /************************************************************************* > File Name: singleLin ...

  5. c语言有头循环单链表

    /************************************************************************* > File Name: singleLin ...

  6. 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)

    所实现的循环单链表的结构例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill ...

  7. 带头结点的循环单链表----------C语言

    /***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...

  8. 循环单链表定义初始化及创建(C语言)

    #include <stdio.h> #include <stdlib.h> /** * 含头节点循环单链表定义,初始化 及创建 */ #define OK 1; #defin ...

  9. c语言实现循环单链表

    //初始化 Node*InitList() { Node*head=(Node*)malloc(sizeof(Node)); head->next=NULL; head->data=-1; ...

随机推荐

  1. Devils never rest

    一个人 练习一个人 书名 看到就被吸引了,然后亚马逊下手 作者很文艺,我很喜欢作者内心的那份宁静. 我一个人吃饭 旅行 到处走走停停 也一个人看书 写信 自己对话谈心 依然是心内一片寂静,总是不由自主 ...

  2. ios app内嵌入http服务器

    1.采用CocoaHTTPServer https://github.com/robbiehanson/CocoaHTTPServer 2.采用MongooseDaemon https://githu ...

  3. ios 获取文件扩展名备忘

    NSString *lastComponent = [cachePath lastPathComponent];              NSString *pathLessFilename = [ ...

  4. LINUX命令批量替换文件中的字符串

    sed -i "s/abcd/1234/g" `grep abcd -rl /home/data` find /data/web  -type f -exec  sed -i 's ...

  5. [PHP]加密解密函数

    非常给力的authcode加密函数,Discuz!经典代码(带详解) function authcode($string, $operation = 'DECODE', $key = '', $exp ...

  6. 10gRAC vip启动报错CRS-1006 CRS-0215

    为测试一个迁移方案,装了一套10g rac环境,可能是很久没有装过10g的RAC了,整个过程情况不断. 1.在把集群软件和数据库软件都装好之后,用crs_stat检测状态的时候,发现vip的状态不对, ...

  7. 蓝桥杯算法提高 P1001(大数乘法)

      算法提高 P1001   时间限制:1.0s   内存限制:256.0MB   当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...

  8. HDU 3535 AreYouBusy (混合背包)

    题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...

  9. WebGL入门教程(一)-初识webgl

    一.WebGL和传统网页的区别: 普通网页组成成分:HTML.JavaScript: WebGL网页组成成分:HTML5.JavaScript和GLSL ES(着色器语言 OpenGL ES): 二. ...

  10. NoSQL 数据库分类

    类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的.最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有 ...