| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:严丽敏奶奶的数据结构单向链表的操作,自己写的
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
严丽敏奶奶的数据结构单向链表的操作,自己写的
因为严奶奶的书里面好多伪代码 就自己写了 我不知道数据结构到底是学什么的。。这算是吗。很困惑 到底要怎么学数据结构呢.?

#include<stdio.h>
#include<stdlib.h>
#define SIZE sizeof(struct List)
/*  the List basic structure */
typedef struct List {                   //基本节点组成  以0作为结束标志!
    int shuju;
    struct List *next;
}Link;
/*  the operate of create */
struct List* CreatList()        //创建链表操作   
{
    int n = 1;
    Link *Lis1,*Lis2,*head;                    
    head = Lis1 = Lis2 = (Link*) malloc (SIZE);
    printf("输入第1个数据:");
    scanf ("%d",&Lis1->shuju);
    while(Lis1->shuju)
    {
    if (n++ == 1) head = Lis1;
    else Lis2->next = Lis1;
    Lis2 = Lis1;
    Lis1 = (Link*) malloc (SIZE);
    printf("输入第%d个数据:",n);
    scanf ("%d",&Lis1->shuju);
    }
Lis2->next = Lis1;
return(head);
}
/*   the output of chain */
void PutLink(Link *Lis)                   //输出链表操作
{
    while(Lis->shuju)
    {
        printf("%d ",Lis->shuju);
        Lis = Lis->next;
    }
}
/*    Insert operate */
struct List* Insert (Link *Lis,Link *add,int n)   //插入链表操作
{                     
if (n == 1) {
    add->next = Lis;                              //貌似如果没return的话 Lis还是会指向原来的地址
    return (add);
}
else {
    for (int y=1; y != n-1; y++)
         Lis = Lis->next;
    add->next = Lis->next;
    Lis->next = add;
    return(Lis);
}     
}
/*  the delete operate */
struct List* Delete(Link *Lis,int n)              //删除链表第N个节点的操作
{
    Link *del;
    if(n == 1)  {
        del = Lis,Lis = Lis->next,free(del);
    }
    else {
        for (int y=1; y != n-1;y++)
            Lis = Lis->next;
        del = Lis->next;
        Lis->next = Lis->next->next;
        free(del);
    }
 return (Lis);
}
/* sorts from small */
void Sort(Link *Lis)                       //链表排序操作 1大到小
{
    int n;
    Link *p1,*p2,*tail = Lis;
    while(tail->shuju) tail = tail->next;
    for (p1 = Lis;p1 != tail; p1 = p1->next)
        for (p2 = p1->next; p2 != tail; p2 = p2->next)
            if(p1->shuju < p2->shuju) {
                n = p1->shuju;
                p1->shuju = p2->shuju;
                p2->shuju = n;}
}
/* operate of Combine */
struct List* Combine(Link *p1,Link *p2)   //合并链表 随便合并没顺序排序之分 合并后的链表再来排序
{
    Link *p12 = p1;
    Link *head = p12;
    p1 = p1->next;
    while(p1->shuju && p2->shuju)
    {
        if(p1->shuju != 0) p12->next = p1,p12 = p1,p1 = p1->next;
        if(p2->shuju != 0) p12->next = p2,p12 = p2,p2 = p2->next;
    }
    p12->next = p2;
    return(head);
}
/* operate of Research */
void Research (Link *Lis,int who)          //查找数据
{
    int n = 0;
    int press = 0;
    while(Lis->shuju) {
        n++;
        if (who == Lis->shuju) press = 1,printf ("Find it!\n在第%d个节点里面有个相同数据\n",n);
        Lis = Lis->next;
    }
    if (press == 0 ) printf ("Didn't reserch anything\n");
}
/*  Acount knots */
void Acount (Link *Lis)
{
    int n=0;
    while(Lis->shuju)
    {
        n++;
        Lis = Lis->next;
    }
    printf ("共%d个节点\n",n);
}
/*  the main program  */
void main()
{
}
搜索更多相关主题的帖子: 数据 operate structure head include 
2012-05-15 21:53
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
收藏
得分:7 
数据结构学的是思想,不是课本的那一个个函数,明白了思想,你可以自己定义编写那些函数
2012-05-17 02:18
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:7 
严奶奶说,代码要自己写,思想要自己体会。。。

我们都在路上。。。。。
2012-05-17 15:24
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
收藏
得分:7 
不是叫严蔚敏奶奶吗
2012-05-17 20:49
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
恩 谢谢!

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-05-17 22:03
快速回复:严丽敏奶奶的数据结构单向链表的操作,自己写的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017237 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved