软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 编程语言 -> 链表操作bigbang -> 正文阅读

[编程语言]链表操作bigbang


题目描述


复习考研累了的时候看看一集二十分钟左右的《生活大爆炸》也不失为一种乐趣。在剧中Sheldon可以说是一个极品,真不知Leonard是如何忍受这位极品室友成天的唠叨。
你知道么?Sheldon有一个神秘的小本本,记录了所有他从小开始讨厌的人名。Stuart这位漫画店老板就是小本本的一员哦,谁叫他常常毫不客气地挤兑Sheldon,曾多次赌赢过Sheldon呢。
Penny是一个漂亮的女孩,好奇心也很强。为了满足她的好奇心,我当回编剧让她意外知道了Sheldon的那个小本本放在了哪里。于是她几乎每天都去看,看看上面有哪些人。但是那个小本本上的人名实在太多。要知道她可是没上过大学在饭店里面当服务员啊。请聪明的你帮帮她处理处理那个小本本吧。
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_1.jpg
1:《生活大爆炸》里的角色
Sheldon每天都会在小本本里记录些人名,当然有时也会与他们和好就会从小本本中将这个人名删除。我们假设Sheldon会在一个空的小本本上插入、删除、查询某个人。
要帮助Penny,你需要知道一个顺序表是怎么初始化、插入、删除以及查找的。下面我就将这些算法列举在下方。
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_2.jpg
2:线性表的动态分配顺序存储结构以及初始化
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_3(2).jpg
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_3.jpg

[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_3.jpg
3:线性表的插入算法
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/image/pimg1325_4.jpg
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_4(1).jpg

[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/pimg1325_4.jpg
4:线性表的删除算法
[img]http://coder.buct.edu.cn:8088/JudgeOnline/upload/201403/image/pimg1325_5.jpg
5:线性表的查找算法

输入


输入数据只有一组,有很多行。每行的格式可能是下列一种:
insert a name
delete name
show
search name
其中 是一个整数,代表在第a个名字前插入名字。name是一个姓名,只包含英文字母的大小写,每个名字不超过30个字符。
输入保证不会插入列表中已经存在的姓名,不会删除列表中不存在的姓名,也不会搜索列表中不存在的姓名。

输出


起始时,列表是空的。只输出showsearch name 的结果。show将列表中的姓名全部输出,search只输出找到该名字的序号(从1开始)。每次输出占一行,姓名间用空格隔开。如果列表中没有名字了,show时也要输出一个空行。

样例输入


insert 1 Stuartinsert 2 Bernadetteshowsearch Stuartdelete Stuartshowinsert 2 Stuartshowinsert 1 Amyinsert 2 Leslieinsert 3 Stephanieshowdelete Leslieshowsearch Stuart

样例输出


Stuart Bernadette1BernadetteBernadette StuartAmy Leslie Stephanie Bernadette StuartAmy Stephanie Bernadette Stuart4
简单的链表操作
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define NULL 0
#define len sizeof(struct stu)

char s[10];
struct stu{
    char name[31];
    struct stu *next;
};
struct stu *ins(struct stu *head,int num,struct stu *head1){
    struct stu *p1;
    if(head==NULL){
        head=head1;
        head1->next=NULL;
        return head;
    }
    int n;
    n=1;
    p1=head;
    if(head!=NULL&&num==1){
        head1->next=p1;
        head=head1;
        return head;
    }
    while(p1->next!=NULL&&n!=num-1){
        p1=p1->next;
        n++;
    }
    if(n==num-1){
        head1->next=p1->next;
        p1->next=head1;
    }
    return head;
};
void print(struct stu *head){
    struct stu *p;
    int i;
    if(head==NULL){
        printf("\n");
    }
    else{
        p=head;
        while(p!=NULL){
            for(i=0;i<strlen(p->name);i++){
                printf("%c",p->name[i]);
            }
            p=p->next;
            if(p!=NULL)
            printf(" ");
        }
        printf("\n");
    }
}
void se(struct stu *head){
    struct stu *p;
    char b[31];
    scanf("%s",b);
    int n=1;
    p=head;
    while(p!=NULL){
        if(strcmp(p->name,b)==0){
            printf("%d\n",n);
            break;
        }
            p=p->next;
            n++;
    }
}
struct stu *del(struct stu *head){
    struct stu *p1;
    struct stu *p2;
    char b[31];
    scanf("%s",b);
    if(head==NULL){
        return head;
    }
    p1=head;
    while(p1->next!=NULL&&strcmp(p1->name,b)!=0){
        p2=p1;
        p1=p1->next;
    }
    if(strcmp(p1->name,b)==0){
        if(p1==head){
            head=p1->next;
        }
        else{
            p2->next=p1->next;
        }
        free(p1);
        p1==NULL;
    }
    return head;
};
int main(){
    struct stu *head;
    struct stu *head1;
    head=NULL;
    int num;
    char b[20];
    while(~scanf("%s",s)){
        if(strcmp(s,"insert")==0){
            head1=(struct stu *)malloc(len);
            scanf("%d %s",&num,&head1->name);
            head=ins(head,num,head1);
            //print(head);
        }
        else if(strcmp(s,"show")==0){
            print(head);
        }
        else if(strcmp(s,"search")==0){
            se(head);
        }
        else if(strcmp(s,"delete")==0){
            head=del(head);
        }
    }
    return 0;
}

......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-02 20:55:35  
编程语言 最新文章
Java面试题(1)
ReactiveX序列——RxSwift
C++STL之ACM相关知识大全
c++中vector向量几种情况的总结(向量指针,
SSH框架整合demo
JAX
UVA
curl备忘(1)
C#机房重构——万事开头难(二)
OJ刷题
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 3:49:29
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --