1-7 删除排序链表中的重复元素分数 7
作者 李廷元
单位 中国民用航空飞行学院
###题目描述:删除排序链表中的重复元素编写一个函数,对于一个给定的排序链表,删除所有重复的元素每个元素只留下一个。
给出1->1->2->NULL,返回 1->2->NULL
给出1->1->2->3->3->NULL,返回 1->2->3->NULL
###单链表结点类型定义:
123456typedef int ElemType; //元素的数据类型typedef struct LNode { ElemType data; //结点的数据域 struct LNode *next; //指向后继结点} LinkNode; //单链表结点类型
函数接口定义:12345678/*尾插法建立单链表,细节不表*/LinkNode* CreateListR(ElemType a[], int n);/*输出线性表,细节不表*/void DispLis ...
1-6 两个有序链表序列的合并分数 5
作者 DS课程组
单位 浙江大学
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。
函数接口定义:1List Merge( List L1, List L2 );
其中List结构定义如下:
123456typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。
裁判测试程序样例:1234567891011121314151617181920212223242526272829#include <stdio.h>#include <stdlib.h ...
1-5 头插法创建单链表(C)分数 7
作者 李廷元
单位 中国民用航空飞行学院
本题要求实现两个函数,输入n个数据,采用头插法创建单链表并打印。例如:如果输入4,再输入3 7 9 5,则应打印输出5 9 7 3。
链表结点结构定义:1234struct Node { //链表结点 int data; //数据 struct Node* link; //指向下一个结点的指针};
函数接口定义:123/* 头插法建立单链表:返回单链表的头指针 */struct Node* buildLinkedList(int* arr, int n); /* 头插法建立单链表 */void printLinkedList(struct Node* head); /* 打印链表 */
其中arr和n是用户传入的参数,n的值不超过100000。head为单链表的头指针。
裁判测试程序样例:1234567891011121314151617181920212223242526272829303132333435#include & ...
1-4 删除链表中的元素分数 7
作者 李廷元
单位 中国民用航空飞行学院
本题要求删除链表中等于给定值val的所有节点。链表ListNode的定义已经给出。要求给出函数removeElements的实现。
函数接口定义:1234567891011/** head为链表头指针;val为需要删除的值。* 函数返回值为删除val后的链表的头指针。*/struct ListNode* removeElements(struct ListNode* head, int val);/* 创建链表,细节不表 */struct ListNode* buildList();/* 打印链表,细节不表 */void printList(struct ListNode* head);
裁判测试程序样例:12345678910111213141516171819202122232425262728293031323334353637#include<stdio.h>#include<stdlib.h>#include<string.h>/** * Definition o ...
1-3 递增的整数序列链表的插入分数 4
作者 DS课程组
单位 浙江大学
本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。
函数接口定义:1List Insert( List L, ElementType X );
其中List结构定义如下:
123456typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Insert要将X插入L,并保持该序列的有序性,返回插入后的链表头指针。
裁判测试程序样例:12345678910111213141516171819202122232425262728#include <stdio.h>#include <stdlib.h>typedef ...
1-2 单链表逆转分数 4
作者 陈越
单位 浙江大学
本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:1List Reverse( List L );
其中List结构定义如下:
123456typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L是给定单链表,函数Reverse要返回被逆转后的链表。
裁判测试程序样例:123456789101112131415161718192021222324252627#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; ...
1-1 求链式表的表长分数 3
作者 陈越
单位 浙江大学
本题要求实现一个函数,求链式表的表长。
函数接口定义:1int Length( List L );
其中List结构定义如下:
123456typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;
L是给定单链表,函数Length要返回链式表的长度。
裁判测试程序样例:1234567891011121314151617181920212223#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;Lis ...
1-2 数组元素的区间删除分数 5
作者 DS课程组
单位 浙江大学
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。
函数接口定义:1int Delete( int A[], int L, int minA, int maxA );
其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A中所有值大于minA而且小于maxA的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表长。
裁判测试程序样例:123456789101112131415161718192021#include <stdio.h>#define MAXN 20int Delete( int A[], int L, int minA, int maxA );int main(){ int A[MAXN], L, minA, maxA, i; scanf("%d" ...
1-1 顺序表操作集分数 5
作者 陈越
单位 浙江大学
本题要求实现顺序表的操作集。
函数接口定义:1234List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );
其中List结构定义如下:
123456typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};
各个操作函数的定义为:
List MakeEmpty():创建并返回一个空的线性表;
Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR;
bool Insert( List L, ElementTy ...
2-13 约瑟夫环分数 9
作者 李廷元
单位 中国民用航空飞行学院
N个人围成一圈顺序编号,从1号开始按1、2、3……顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。
输入格式:输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。
输出格式:按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。
输入样例:在这里给出一组输入。例如:
17 3
输出样例:13 6 2 7 5 1 4
我卡住的位置123456789101112131415161718192021222324252627282930313233343536#include <iostream>using namespace std;// 定义顺序表结构typedef struct { int *data; int length;} sqList;// 初始化顺序表void initL ...


