C语言实现链表
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct Node {
int data;
struct Node * pNode
} NODE,* PNODE;
PNODE create_list();
void show_list(PNODE);
int is_emp(PNODE);
int length_list(PNODE);
int insert_list(PNODE,int,int);
int delete_list(PNODE,int,int *);
void sort_list(PNODE);
int main(void) {
PNODE p = create_list();
sort_list(p);
insert_list(p,3,99);
show_list(p);
int i;
delete_list(p,3,&i);
show_list(p);
printf("\n");
printf("%d",i);
return 0;
}
int delete_list(PNODE phead ,int pos,int * val){
PNODE p = phead;
int i =0;
while(NULL!=p && i<pos-1) {
p=p->pNode;
i++;
}
if(i>pos-1|| NULL == p){
return 0;
}
*val = p->pNode->data;
p->pNode=p->pNode->pNode;
return 1;
}
int insert_list(PNODE phead,int pos,int val){
PNODE p = phead;
int i =0;
while(NULL!=p && i<pos-1) {
p=p->pNode;
i++;
}
if(i>pos-1|| NULL == p){
return 0;
}
PNODE pnew = (PNODE)malloc(sizeof(NODE));
PNODE temp;
pnew ->data=val;
temp = p->pNode;
p->pNode=pnew;
pnew->pNode = temp;
return 1;
}
void sort_list(PNODE phead) {
int i,j,k;
int len = length_list(phead);
PNODE p,q;
for(i=0,p=p->pNode;i<len-1;p=p->pNode,i++) {
for(j=i+1,q=p->pNode;j<len;q=q->pNode,j++) {
if(p->data > q->data) {
k=q->data;
q->data=p->data;
p->data=k;
}
}
}
return;
}
int is_emp(PNODE phead) {
if(phead -> pNode == NULL) {
return 1;
} else {
return 0;
}
}
int length_list(PNODE phead) {
int i =0;
PNODE p = phead->pNode;
while(NULL != p) {
p=p->pNode;
i++;
}
return i;
}
PNODE create_list() {
int length = 0;
int val=0;
int i =0;
printf("input the list len: ");
scanf("%d",&length);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
PNODE tail=pHead;
tail->data=0;
tail->pNode = NULL;
if(NULL == pHead) {
printf("t is error");
}
for(i=0; i<length; ++i) {
printf("the %d node value: ",i+1);
scanf("%d",&val);
PNODE pnew = (PNODE)malloc(sizeof(NODE));
pnew ->data=val;
tail->pNode=pnew;
pnew->pNode=NULL;
tail=pnew;
}
return pHead;
}
void show_list(PNODE Plist) {
PNODE next = Plist->pNode;
while(NULL != next) {
printf("%d ",next->data);
next = next->pNode;
}
printf("\n");
return;
}
C语言实现链表的更多相关文章
- C语言之链表
这两天在复习C语言的知识,为了给下个阶段学习OC做准备,以下的代码的编译运行环境是Xcode5.0版本,写篇博文把昨天复习的C语言有关链表的知识给大家分享一下,以下是小菜自己总结的内容,代码也是按照自 ...
- C语言习题 链表建立,插入,删除,输出
Problem B: C语言习题 链表建立,插入,删除,输出 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 222 Solved: 92 [Subm ...
- YTU 2430: C语言习题 链表建立,插入,删除,输出
2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 576 解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表 ...
- 关于c语言单项链表尾添加
犹豫了几天,看了很多大牛写的关于c语言链表,感触很多,终于下定决心,把自己对于链表的理解随之附上,可用与否,自行裁夺.由于作者水平有限也是第一次写,不足之处,竭诚希望得到各位大神的批评指正.制作不易, ...
- C语言之链表list
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...
- C语言:链表实现的一个实例
问题:写一个程序输入你一年看过的所有电影以及每部电影的各种信息(简化问题:每部电影只要求输入片名和评价) 链表实现: #include<stdio.h> #include<stdli ...
- C语言单链表实现19个功能完全详解
谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...
- (转)c语言_链表实例讲解(两个经典例子)
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. #include <stdio.h>#include <stdlib.h> struct grade { ...
- Javascript模仿C语言的链表实现(增删改查),并且使用控制台输入输出
Js新手最近在研究Js数据结构,刚好看到链表实现这一块儿,觉得有些资料和自己理解的有冲突,于是借着自己以前一点点C语言的基础,用Javascript模仿了C的链表实现,并且用了process.stdi ...
- c语言_链表实例讲解(两个经典例子)
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. demo1 // lianbiao.cpp : Defines the entry point for the console app ...
随机推荐
- spark(oom内存溢出异常(out of memory))介绍1
建立如图maven工程 maven的pom文件内容参考别的随笔 参考pom文件内容 同时记得添加scala oom内存溢出异常(out of memory)
- Gym - 100971J ——DFS
Statements Vitaly works at the warehouse. The warehouse can be represented as a grid of n × mcells, ...
- 电脑连接真机,但是androidstudio不显示手机,ADB Interface黄色感叹号
1.打开设备管理器 右键计算机 -->管理-->选择设备管理器 2. 步骤如下: 1. 在设备管理器中,找到ADB Interface,右击,选择“更新驱动程序软件” 2. 在弹出的窗口中 ...
- Reporting Service服务SharePoint集成模式安装配置(7、配置SharePoint2010产品)
在第3步安装完成SharePoint2010产品后,没有选择[立即安装产品配置向导],这一小节将单独配置SharePoint2010产品数据库(管理中心). 1)启动SharePoint 2010 产 ...
- INDEX--索引页上存放那些数据
由于索引的叶子节点和非叶子节点的作用不同,导致不同类型节点上每行记录存放的数据不同--============================================唯一聚集索引叶子节点:所有 ...
- solidity 合约间调用以及参数传递
在 以太坊中合约间是可以相互调用,并且正常进行参数传递以及返回值处理. contract1.sol pragma solidity ^0.4.0; contract Test1 { uint256 p ...
- Android应用开发以及设计思想深度剖析
Android应用开发以及设计思想深度剖析(1) 21cnbao.blog.51cto.com/109393/956049
- Maximum splitting(规律,数论)
You are given several queries. In the i-th query you are given a single positive integer ni. You are ...
- 1.IPtable基础命令总结
iptables概念 规则查询 #查看对应表中的所有规则 iptables -t 表名 -L #查看表的指定链中的规则 iptables -t 表名 -L 链名 #查看对应表中的所有规则, -v显示跟 ...
- 十,PHP下载文件
1,文件类型 (1)文本文件,如xx.txt. (2)二进制文件,如图片.视频.音频. 2,文件下载流程如下图所示,首先浏览器向服务器发送下载请求,服务器将下载资源读入内存,再通过http将资源返回到 ...