C++中如何对单向链表操作
*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年6月25日
* 版本号:V1.0
* 问题描述:对单向链表的增加,删除,插入
* 程序输入:无
* 程序输出:见运行结果
*/ #include "stdio.h"
#include "stdlib.h"
#include "string.h" struct STUDENT{ char name[32];
struct STUDENT *next;
};
void addStudent(STUDENT *stu);
void delStudent(char *name);
void saveStuToFile();
STUDENT *gStu=NULL;
int main()
{ int i;
for(i=0;i<100;i++)
{
STUDENT *stu;
stu = (STUDENT *)malloc(sizeof(STUDENT));
memset(stu->name,0,sizeof(stu->name));
sprintf(stu->name,"%s%d","zhangsan",i+1);
addStudent(stu);
}
saveStuToFile();
STUDENT *p;
p = gStu;
while(p)
{
printf("%s\n",p->name);
p= p->next;
} for(i=20;i<30;i++)
{
char name[32];
sprintf(name,"%s%d","zhangsan",i+1);
delStudent(name);
} p = gStu;
while(p)
{
printf("%s\n",p->name);
p= p->next;
} } void addStudent(STUDENT *stu)
{ STUDENT *p;
if(gStu==NULL)
{
gStu =stu;
stu->next=NULL;
}
else
{
p = gStu;
while(p)
{
if(p->next==NULL)
{
p->next =stu;
stu->next =NULL; }
p= p->next; } }
}
void delStudent(char *name)
{
STUDENT *p,*pre;
if (gStu==NULL)
{
return;
}
p =pre=gStu;
while(p)
{ if (!strcmp(p->name,name))
{
if(p==gStu)
{
gStu = gStu->next;
free(p);
p=NULL;
}
else
{
pre->next =p->next;
free(p);
p=NULL; }
}
else
{
pre =p;
p= p->next;
}
}
} void saveStuToFile()
{
FILE *fp; int filelen; fp = fopen("yyy.txt","w"); STUDENT *p;
p = gStu;
while(p)
{
fwrite(p->name,32,1,fp);
p= p->next; } fclose(fp);
}
C++中如何对单向链表操作的更多相关文章
- Alan Cox:单向链表中prev指针的妙用
之前发过一篇二级指针操作单向链表的例子,显示了C语言指针的灵活性,这次再探讨一个指针操作链表的例子,而且是一种完全不同的用法. 这个例子是linux-1.2.13网络协议栈里的,关于链表遍历& ...
- C#学习单向链表和接口 IList<T>
C#学习单向链表和接口 IList<T> 作者:乌龙哈里 时间:2015-11-04 平台:Window7 64bit,Visual Studio Community 2015 参考: M ...
- c++(循环单向链表)
前面的博客中,我们曾经有一篇专门讲到单向链表的内容.那么今天讨论的链表和上次讨论的链表有什么不同呢?重点就在这个"循环"上面.有了循环,意味着我们可以从任何一个链表节点开始工作,可 ...
- 输入一个单向链表,输出该链表中倒数第K个结点
输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...
- C/C++中对链表操作的理解&&实例分析
链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个“头指针”变量,以head表示,它存放一个地址.该地址指向一个元素.链表中每一个元素称 ...
- python中的单向链表实现
引子 数据结构指的是是数据的组织的方式.从单个数据到一维结构(线性表),二维结构(树),三维结构(图),都是组织数据的不同方式. 为什么需要链表? 顺序表的构建需要预先知道数据大小来申请连续的存储空间 ...
- java对单向单向链表的操作
概述:众所周知,数据对于数据的存储时连续的,也就是说在计算机的内存中是一个整体的.连续的.不间断的ADT数据结构.伴随的问题也会随之出现,这样其实对于内存的动态分配是不灵活的.而链表具备这个优点.因此 ...
- 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点
第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...
- 输出单向链表中倒数第k个结点
描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int m_nKey; ListNode* ...
随机推荐
- 如何离开/退出/停用Python virtualenv
我正在使用virtualenv和virtualenvwrapper. 我可以使用workon命令在virtualenv之间切换. me@mymachine:~$ workon env1 (env1)m ...
- std::string和ctime之间的转换
int year, month, day, hour, minute, second; string strTime: sscanf(strTime.c_str(), "%d-%d-%d % ...
- iTOP4412开发板-使用buildroot搭建最简单的linux
本文档介绍的是使用buildroot搭建最简单的linux文件系统,Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfi ...
- django框架进阶-解决跨域问题
####################################### """ 一.为什么会有跨域问题? 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不 ...
- Codeforces Round#615 Div.3 解题报告
前置扯淡 真是神了,我半个小时切前三题(虽然还是很菜) 然后就开始看\(D\),不会: 接着看\(E\),\(dp\)看了半天,交了三次还不行 然后看\(F\):一眼\(LCA\)瞎搞,然后\(15m ...
- Ubuntu虚拟环境的搭建
转载:https://blog.csdn.net/weixin_43078957/article/details/86006240 虚拟环境的搭建1.pip install virtualenv这个要 ...
- 《C 程序设计语言》练习1-3
#include<stdio.h> /*当fahr=0,20,...,300时,打印华氏温度与摄氏温度对照表; 浮点数版本*/ main () { float fahr,celsius; ...
- [LC] 298. Binary Tree Longest Consecutive Sequence
Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...
- C++ List的用法
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() ...
- python-django框架-电商项目-项目部署_20191127
python-django框架-电商项目-项目部署: uwsgi作为web服务器: 在pycharm中启动项目:使用python manage.py runserver 这个runserver是dja ...