【C/PTA —— 15.结构体2(课外实践)】

这篇具有很好参考价值的文章主要介绍了【C/PTA —— 15.结构体2(课外实践)】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7-1 一帮一

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include<stdio.h>
#include<string.h>

struct student
{
    int a;
    char name[20];
};

struct student1
{
    int b;
    char name1[20];
};

int main()
{
    struct student  s1[50];
    struct student1 s2[50];
    struct student1 s3[50];

    int i, n, j = 0, t = 0, c, d;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d %s", &s1[i].a, s1[i].name);
    }

    for (i = 0; i < n; i++)
    {
        if (s1[i].a == 1)
        {
            s2[j].b = i;
            strcpy(s2[j].name1, s1[i].name);
            j++;
        }
        if (s1[i].a == 0)
        {
            s3[t].b = i;
            strcpy(s3[t].name1, s1[i].name);
            t++;
        }
    }

    c = n / 2 - 1, d = n / 2 - 1;
    j = 0, t = 0;
    for (i = 0; i < n / 2; i++)
    {
        if (s3[j].b < s2[t].b)
        {
            printf("%s %s\n", s3[j].name1, s2[c].name1);
            j++;
            c--;
        }
        else
        {
            printf("%s %s\n", s2[t].name1, s3[d].name1);
            t++;
            d--;
        }
    }
    return 0;
}

7-2 考试座位号

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include<stdio.h>
struct student
{
	char num[17];
	int s;
	int k;
};

int main()
{
	int n = 0;
	scanf("%d", &n);
	struct student stu[1000]={0};
	for (int i = 0; i < n; i++)
	{
		scanf("%s %d %d", stu[i].num, &stu[i].s, &stu[i].k);
	}
	int m = 0,ret;     
	scanf("%d", &m);
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &ret);
        int j=0;
		for (j = 0; j < n; j++)
		{
			if (ret == stu[j].s)
			{
				printf("%s %d\n", stu[j].num, stu[j].k);
			}
		}
		
	}
	return 0;
}

7-3 新键表输出

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构体
typedef struct ListNode {
    int val;
    struct ListNode* next;
} ListNode;

// 定义头节点指针
ListNode* createList() {
    ListNode* head = NULL;
    int num;
    while (1) {
        scanf("%d", &num);
        if (num == -1) {
            break;
        }
        ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
        newNode->val = num;
        newNode->next = NULL;
        if (head == NULL) {
            head = newNode;
        } else {
            ListNode* cur = head;
            while (cur->next != NULL) {
                cur = cur->next;
            }
            cur->next = newNode;
        }
    }
    return head;
}

// 遍历链表,将奇数值节点插入新链表
ListNode* createNewList(ListNode* head) {
    ListNode* newHead = NULL;
    ListNode* cur = head;
    while (cur != NULL) {
        if (cur->val % 2 != 0) {
            ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
            newNode->val = cur->val;
            newNode->next = NULL;
            if (newHead == NULL) {
                newHead = newNode;
            } else {
                ListNode* temp = newHead;
                while (temp->next != NULL) {
                    temp = temp->next;
                }
                temp->next = newNode;
            }
        }
        cur = cur->next;
    }
    return newHead;
}

// 打印链表
void printList(ListNode* head) {
    ListNode* cur = head;
    printf("%d", cur->val);
    cur = cur->next;
    while (cur != NULL) {
        printf(" %d", cur->val);
        cur = cur->next;
    }
    printf("\n");
}

int main() {
    // 创建链表
    ListNode* head = createList();
    // 创建新链表
    ListNode* newHead = createNewList(head);
    // 打印新链表
    printList(newHead);
    return 0;
}

7-4 可怕的素质

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include <stdio.h>
#include<stdlib.h>
typedef struct student student;
struct student{
    int ret;
    struct student *next;
};
student *insert(int n);
void prin(student*,int n);
int main(){
    int n;
    student *stu1;
    scanf("%d", &n);
    stu1=insert(n);
    prin(stu1, n);
    return 0;
}
void prin(student*stu1,int n){
    student *p = stu1->next;
    while(p!=NULL){
        if(p->next!=NULL)printf("%d ", p->ret);
        else
            printf("%d", p->ret);
        p = p->next;
    }
}
student *insert(int n){
    student *head;
    head = (struct student*) malloc(sizeof(student));
    head->next = NULL;
    student *p = head, *q;
    int pos = 0;
    for (int i = 1; i <= n;i++){
        scanf("%d", &pos);
        q = (struct student *)malloc(sizeof(student));
        q->ret = i;
        q->next = NULL;
        if(i==1){
            head->next = q;
            }
        
        else if(pos==0){
            q->next = head->next;
            head->next = q;
        }
        else if(pos!=0){
            p = head->next;
            while(p->ret!=pos){
                p = p->next;
            }
            q->next = p->next;
            p->next = q;
        }
    }
    return head;
}

7-5 找出同龄者

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include<stdio.h>
typedef struct student
{
	char name[10];
	int age;
}student;
int main()
{
	int n = 0;
	student stu[100];
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%s %d", stu[i].name, &stu[i].age);
	}
	int m = 0;
	scanf("%d", &m);
	int j = 0;
	for (int i = 0; i < n; i++)
	{
		if (stu[i].age != m)
		{
			printf("%s", stu[i].name);
			j = i;
			break;
		}
			
	}
	for (int i = j + 1; i < n; i++)
	{
		if (stu[i].age != m)
		{
			printf(" %s", stu[i].name);
		}
	}
	return 0;
}

7-6 排队

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构

#include<stdio.h>
#include<stdlib.h>
typedef struct student student;
//还是双链表好用
struct student{
    student *prior;
    student *next;
    int ri, bi, fi,ret;
    double height;
    student *arret;
};
student* create(int n){
    student *head, *p, *q;
    head = (student*)malloc(sizeof(student));
    head->prior = NULL;
    head->next = NULL;
    head->arret = NULL;
    for (int i = 1; i <= n;i++){
        q = (student*)malloc(sizeof(student));
        scanf("%lf", &q->height);
        q->ret = i;
        if(i==1){
            head->next = q;
            head->arret = q;
            q->arret = NULL;
            q->prior = head;
            q->next = NULL;
            
        }else {
            p->next = q;
            p->arret = q;
            q->arret = NULL;
            q->prior = p;
            q->next = NULL;
        }
        p = q;
    }
    return head;
}
void swap(student *p1,student *p2){
    student *p1f, *p1b, *p2f, *p2b;
    p1f = p1->prior;
    p1b = p1->next;
    p2f = p2->prior;
    p2b = p2->next;
 
    p1f->next = p1b;
    p1b->prior = p1f;
    p1b->next = p2f;
    p2f->prior = p1b;
    p2f->next = p2b;
    if(p2b!=NULL)
        p2b->prior = p2f;
}
int main(){
    int n;
    scanf("%d", &n);
    student *stu1;
    stu1=create(n);
    student *p = stu1->next;
    for (int i = 1; i < n;i++){
        p = stu1->next;
        for (int j = 1; j < n - i + 1;j++){
            if(p->height<p->next->height){
                swap(p,p->next);
            }
            else p = p->next;
        }
    }
    p = stu1->next;
    for (int i = 1; i <= n;i++){
        if(i==1){
            p->fi = 0;
            p->bi = p->next->ret;
        }else if(i==n){
            p->bi = 0;
            p->fi = p->prior->ret;
        }else {
            p->fi = p->prior->ret;
            p->bi = p->next->ret;
        }
        p->ri = i;
        p = p->next;
    }
    p = stu1->arret;
    for (int i = 1; i <= n;i++){
        printf("%d %d %d\n", p->ri, p->fi, p->bi);
        p = p->arret;
    }
        return 0;
}

7-7 军训

【C/PTA —— 15.结构体2(课外实践)】,C语言,#PTA,## 结构体,c语言,算法,结构体,数据结构文章来源地址https://www.toymoban.com/news/detail-757892.html

#include<stdio.h>
#include<stdlib.h>
typedef struct queue queue;
struct queue{
    int rank;
    queue *prior;
    queue *next;
    int size;
};
void print(queue *queue1){
    queue *p = queue1->next;
    while(p!=NULL){
        if(p->next!=NULL)printf("%d ", p->rank);
        else
            printf("%d\n", p->rank);
        p = p->next;
    }
}
queue *delete_LB(queue *queue1){
    queue *k = queue1;
    queue1->prior->next = queue1->next;
    if(queue1->next!=NULL)queue1->next->prior = queue1->prior;
    queue1 = queue1->prior;
    free(k);
    return queue1;
}
queue *create(int n){
    queue *head;
    queue *p, *q;
    head = (queue*)malloc(sizeof(queue));
    head->prior = NULL;
    head->next = NULL;
    for (int i = 1; i <= n;i++){
        q = (queue *)malloc(sizeof(queue));
        q->rank = i;
        if(i==1){
            head->next = q;
            q->prior = head;
            q->next = NULL;
        }else {
            p->next = q;
            q->prior = p;
            q->next = NULL;
        }
        p = q;
    }
    return head;
}
int main(){
    int n;
    scanf("%d", &n);
    queue document[105];
    queue *a;
    for (int i = 1; i <= n;i++){
        int count;
        scanf("%d", &count);
        a = create(count);
        a->size = count;
        queue *p;
        while(a->size>3){
            p = a->next;
            for (int j = 1; j <= count; j++)
            {
                if (j % 2 == 0)//这里无需判断是否size>3,因为无论是否满足,都必须在进行的一轮内将所有2的报数删除;
                {
                    p=delete_LB(p);
                    a->size--;
                }
                p = p->next;
            }
            count = a->size;
            p = a->next;
            if(a->size>3)//这里加上size>3的判断才能保证n=40的情况下37不会被删除,否则还会进行一次j=3时的删除操作;特殊情况(即处理完上一轮2的报数后size恰好为3,但是此时没有加入判断的话循环会继续运行,会多删除1项)
            {
                for (int j = 1; j <= count; j++)
                {
                    if (j % 3 == 0) 
                    {
                        p = delete_LB(p);
                        a->size--;
                    }
                    p = p->next;
            }
            }
        count = a->size;
        }
        document[i] = *a;
    }
    for (int i = 1; i <= n;i++){
        print(&document[i]);
    }
    return 0;
}

到了这里,关于【C/PTA —— 15.结构体2(课外实践)】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 7-1 回文判断(数据结构) PTA C语言

    回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。 若用C++,可借助STL的容器实现。 输入格式: 输入待判断的字符序列,按回车键结束,字符序列长度20。 输出格式: 若字符序列是

    2024年02月02日
    浏览(45)
  • 数据结构与算法入门书籍推荐(15本)

    1.《算法图解》 本书适合刚开始学习算法的初学者,它使用非常通俗易懂的语言,详细解释了各种基础算法的实现方法,包括快速排序、图论、动态规划和贪心算法等。 2.《算法导论》 这是一本通用的算法指南,涵盖了所有重要的算法和数据结构。尽管它可能对初学者来说过

    2024年02月11日
    浏览(45)
  • 【数据结构和算法15】二叉树的实现

    二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子 重要的二叉树结构 完全二叉树(complete binary tree)是一种二叉树结构,除最后一层以外,每一层都必须填满,填充时要遵从先左后右 平衡二叉树(balance binary tree)是一种二叉树结构,其中每个节点的左

    2024年02月16日
    浏览(34)
  • 【数据结构与算法】掌握顺序栈:从入门到实践

       🌱博客主页:青竹雾色间. 🌱系列专栏:数据结构与算法 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 前言 顺序栈的实现 初始化栈 判断栈空 判断栈满 入(进)栈 出栈 获取栈顶元素 示例代码 顺序栈的应用前景 当你学习数据结构和算法时,顺序栈(Sequential

    2024年02月08日
    浏览(66)
  • python算法与数据结构---单调栈与实践

    单调栈是一个栈,里面的元素的大小按照它们所在栈的位置,满足一定的单调性; 性质: 单调递减栈能找到左边第一个比当前元素大的元素 ; 单调递增栈能找到左边第一个比当前元素小的元素 ; 应用场景 一般用于解决第一个大于XXX或者第一个小于XXX这一类的题目 优点:

    2024年01月21日
    浏览(55)
  • 《数据结构》_PTA_数据结构作业6:图

    1-1 无向连通图所有顶点的度之和为偶数。 T 1-2 无向连通图边数一定大于顶点个数减1 F 1-3 无向连通图至少有一个顶点的度为1。 F 1-4 用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关. F 1-5 用邻接矩阵法存储图,占用的存储空间数只与图中结点个数

    2024年02月04日
    浏览(55)
  • 实践和项目:解决实际问题时,选择合适的数据结构和算法

    🎉欢迎来到数据结构学习专栏~实践和项目:解决实际问题时,选择合适的数据结构和算法 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:数据结构学习 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹

    2024年02月09日
    浏览(46)
  • 7-1 天梯地图 (PTA-数据结构)

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。 输入格式: 输入在第一行给出两个正整数 N (2 ≤

    2024年02月02日
    浏览(44)
  • 7-1 抢红包(PTA - 数据结构)

    没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。 输入格式: 输入第一行给出一个正整数N(≤104),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:

    2024年01月23日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包