zoukankan      html  css  js  c++  java
  • 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
    ",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
    ",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);
    }
    

  • 相关阅读:
    bzoj3380+3381+3382+3383 Usaco2004 Open
    浅谈树链剖分(C++、算法、树结构)
    小学奥数 最大公约数与最小公倍数
    小学奥数 质数的和与积
    小学奥数 分苹果
    小学奥数 连乘积末尾0的个数
    小学奥数 李白的酒
    小学奥数 回文数个数
    小学奥数 等差数列末项计算
    小学奥数 地球人口承载力估计
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232174.html
Copyright © 2011-2022 走看看