Problem D: 链表的基本运算(线性表)

Problem D: 链表的基本运算(线性表)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 18  Solved: 10

Description

编写一个程序,实现链表的各种基本运算(假设顺序表的元素类型为char),主函数已给出,请补充每一种方法。

 

1、初始化单链表L;

2、采用尾插法依次插入元素a,b,c,d,e;

3、输出单链表L;

4、输出单链表L的长度;

5、判断单链表L是否为空;

6、输出单链表L的第三个元素;

7、输出元素a的位置;

8、在第四个元素位置插入元素f;

9、输出单链表L;

10、删除L的第三个元素;

11、输出单链表L;

12、释放单链表L;

    

数据元素类型定义为
typedef char ElemType;

 

顺序表的定义为

typedef struct Node
{
ElemType data;
struct Node *next;
} SqList;
主函数:

int main()
{
    SqList *L;
    InitList(L);                            //初始化单链表
    ElemType a,b,c,d,e;
    scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
    Insert(L,a);
    Insert(L,b);
    Insert(L,c);
    Insert(L,d);
    Insert(L,e);                            //使用尾插法插入元素a,b,c,d,e
    Print(L);                               //输出单链表
    PrintLength(L);                         //输出单链表长度
    if(SqNull(L))
        printf("单链表不为空\n");
    else printf("单链表为空\n");            //判断单链表是否为空
    PrintData(L,3);                         //输出第三个元素
    printf("元素a的位置:%d\n",Find(L,a));  //输出元素a的位置
    ElemType f;
    scanf("%c",&f);
    Insertinto(L,4,f);                      //将f插入到第四个位置
    Print(L);                               //输出单链表
    Delete(L,3);                            //删除第三个元素
    Print(L);                               //输出单链表
    free(L);                                //释放内存
    return 0;
}

Input

第一行输入五个元素a,b,c,d,e;接下来输入元素f;请根据题目编写算法。

Output

Sample Input

1 2 3 4 5
6

Sample Output

1 2 3 4 5
5
单链表不为空
3
元素a的位置:1
1 2 3 6 4 5
1 2 6 4 5

HINT

请使用C++编译并提交

#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct Node
{ElemType data;struct Node *next;
} SqList;
void InitList(SqList *&L)
{L=(SqList*)malloc(sizeof(SqList));L->next=NULL;
}
void Insert(SqList *&L,ElemType n)
{SqList *p=L,*q;while(p->next!=NULL)p=p->next;q=p;p=(SqList*)malloc(sizeof(SqList));q->next=p;p->data=n;p->next=NULL;
}
void Print(SqList *L)
{SqList *p=L->next;while(p->next!=NULL){printf("%c ",p->data);p=p->next;}printf("%c\n",p->data);
}
void PrintLength(SqList *L)
{int i=0;SqList *p=L->next;while(p!=NULL){i++;p=p->next;}printf("%d\n",i);
}
bool SqNull(SqList *L)
{SqList *p=L->next;if(L->next!=NULL)return true;else return false;
}
void PrintData(SqList *L,int n)
{SqList *p=L->next;int i;for(i=0; i<n-1&&p->next!=NULL; i++)p=p->next;printf("%c\n",p->data);
}
int Find(SqList *L,ElemType a)
{SqList *p=L->next;for(int i=0; p!=NULL; i++)if(p->data==a)return i+1;return 0;
}
void Insertinto(SqList *&L,int n,ElemType f)
{SqList *p=L->next,*q;for(int i=1; p!=NULL; i++){if(i==n-1){q=(SqList*)malloc(sizeof(SqList));q->data=f;q->next=p->next;p->next=q;}p=p->next;}
}
void Delete(SqList *&L,int n)
{SqList *p=L->next,*q;for(int i=1; p!=NULL; i++){if(i==n-1){q=p->next;p->next=p->next->next;free(q);}p=p->next;}
}
int main()
{SqList *L;InitList(L);                            //初始化单链表ElemType a,b,c,d,e;scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);Insert(L,a);Insert(L,b);Insert(L,c);Insert(L,d);Insert(L,e);                            //使用尾插法插入元素a,b,c,d,ePrint(L);                               //输出单链表PrintLength(L);                         //输出单链表长度if(SqNull(L))printf("单链表不为空\n");else printf("单链表为空\n");            //判断单链表是否为空PrintData(L,3);                         //输出第三个元素printf("元素a的位置:%d\n",Find(L,a));  //输出元素a的位置ElemType f;scanf("%c",&f);Insertinto(L,4,f);                      //将f插入到第四个位置Print(L);                               //输出单链表Delete(L,3);                            //删除第三个元素Print(L);                               //输出单链表free(L);                                //释放内存return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Problem B: 结构体---职工信息结构体

Problem B: 结构体---职工信息结构体 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 504 Solved: 306编写程序&#xff0c;定义一个存放职工信息的结构体类型&#xff0c;职工信息包括职工姓名、工作年限、工资总额。初始化5名职工的信息&#xff0c;对工作年限超过30年的…

Problem C: 结构体---点坐标结构体

Problem C: 结构体---点坐标结构体 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 663 Solved: 444[Submit][Status][Web Board]Description 定义一个表示点坐标的结构体&#xff0c;输入两个点的坐标&#xff0c;输出这两个点中点的坐标 Input 第一个点的坐标&#xff08…

Problem D: 编程题B-向量的数量积

Problem D: 编程题B-向量的数量积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 164 Solved: 148Description 已知两个非零向量a&#xff08;x1&#xff0c;y1&#xff09;&#xff0c;b&#xff08;x2&#xff0c;y2&#xff09;&#xff0c;则有abx1x2y1y2&#xff0c;…

Problem E: 高于均分的学生

Problem E: 高于均分的学生 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 67 Solved: 45Description 输入n(<100)个学生的姓名、学号和成绩&#xff0c;将其中高于平均成绩的姓名、学号和成绩输出。 Input 第一行为学生人数 n 第二行到第n1行&#xff0c;每行一个学生…

Problem E: 建立链表(线性表)

Problem E: 建立链表(线性表) Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 323 Solved: 207Description &#xff08;线性表&#xff09;设键盘输入n个英语单词&#xff0c;输入格式为n, w1, w2, …,wn,其中n表示随后输入英语单词个数&#xff0c;试编一程序&#xff0c…

Problem A: 判断操作是否合法(栈和队列)

Problem A: 判断操作是否合法&#xff08;栈和队列&#xff09; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 67 Solved: 22Description 假设以I和O分别表示进栈和出栈操作&#xff0c;栈的初态和终态均为空&#xff0c;进栈和出栈的操作序列可表示为仅由I和O组成的序列…

Problem G: 函数---判断日期(年月日)是否合法

Problem G: 函数---判断日期&#xff08;年月日&#xff09;是否合法 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 566 Solved: 240Description 编写函数isValid_date&#xff0c;函数声明如下: int isValid_date(int year,int month,int day); //判断日期&#xff08;年…

Problem H: 今年第几天?

Problem H: 今年第几天&#xff1f; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 723 Solved: 310Description 定义一个函数&#xff0c;其参数为年、月、日的值&#xff0c;返回这一天为该年的第几天。要求在main函数中输入年月日&#xff0c;然后调用这个函数求值&…

Problem I: 函数---判断某年某月某日是这一年中的第几天

Problem I: 函数---判断某年某月某日是这一年中的第几天 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 457 Solved: 194Description 在主程序(main)中输入某年某月某日&#xff0c;例如2012 9 18(年月日之间用空格隔开)&#xff0c; 调用函数dayth来得到某年某月某日是这…

Problem C: 括号匹配(栈和队列)

Problem C: 括号匹配&#xff08;栈和队列&#xff09; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 76 Solved: 18[Submit][Status][Web Board]Description 假设一个表达式中只允许包含三种括号&#xff1a;圆括号“(”和“)”&#xff0c;方括号“[”和“]”和花括号“…

Problem D: 栈的基本运算(栈和队列)

Problem D: 栈的基本运算&#xff08;栈和队列&#xff09; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 43 Solved: 15[Submit][Status][Web Board]Description 编写一个程序&#xff0c;实现顺序栈的各种基本运算&#xff0c;主函数已给出&#xff0c;请补充每一种方法…

Problem B: C语言习题 矩阵元素变换

Problem B: C语言习题 矩阵元素变换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 942 Solved: 558[Submit][Status][Web Board]Description 将一个nn(2<n<10,n为奇数)的矩阵中最大的元素放在中心&#xff0c;4个角分别放4个最小的元素&#xff08;按从左到右、从上…

Problem D: 删出多余的空格

Problem D: 删出多余的空格 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 667 Solved: 308[Submit][Status][Web Board]Description 小平在给弟弟检查英语作业时时&#xff0c;发现每个英语句子单词之间的空格个数不等&#xff0c;请你编程帮他把句子中多余的空格去掉&am…

Problem D: 顺序串的基本运算

Problem D: 顺序串的基本运算 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 73 Solved: 28[Submit][Status][Web Board]Description 编写一个程序&#xff0c;实现顺序串的各种基本运算&#xff0c;主函数已给出&#xff0c;请补充每一种方法。 1、建立串s"abcdefgh…

骨牌铺方格

骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46495 Accepted Submission(s): 22470 Problem Description在2n的一个长方形方格中,用一个1 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n3时…

递归思想完成n皇后问题

已经很长时间不敲代码了&#xff0c;感觉自己越来与颓废&#xff0c;所以现在又想做回一名苦逼的程序员&#xff0c;开启自己的代码之路。 我是根据视频敲的&#xff0c;没有题目&#xff0c;先看个四皇后问题吧。 所谓4皇后问题就是求解如何在44的棋盘上无冲突的摆放4个皇后棋…

POJ1163 数字三角形

1.题目信息&#xff08;http://poj.org/problem?id1163&#xff09; The TriangleTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 30397 Accepted: 17973 Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1) Figure 1 shows a number tri…

virtualbox的USB识别

VirtualBox识别USB教程 作者&#xff1a;Vincent June 13, 2017 在Virtualbox虚拟机配置面板中打开USB设备选项&#xff0c;分别勾选上“启动USB控制器”“启用usb2.0控制器”选项&#xff0c;如果有错误去https://www.virtualbox.org/wiki/Downloads 下载相应版本的插件包&a…

ubuntu实现简单的划词工具

ubuntu实现简单的划词工具 由于ubuntu下面没有比较好用的划词翻译工具&#xff0c;而且本人比较喜欢有道词典&#xff0c;虽然ubuntu下有deepin版本的有道词典包&#xff0c;可是总是会有bug&#xff0c;卡死等等。所以自己参考别人写了一个小工具&#xff0c;涉及shell和pyth…

动态规划进阶题目之滑雪

Problem F: 动态规划进阶题目之滑雪 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4 Solved: 3[Submit][Status][Web Board]Description Michael喜欢滑雪百这并不奇怪&#xff0c; 因为滑雪的确很刺激。可是为了获得速度&#xff0c;滑的区域必须向下倾斜&#xff0c;而且当…