写点什么

编程常见必备知识

用户头像
梦醒了
关注
发布于: 2021 年 02 月 23 日

链表介绍:


用结构体变量建立链表是最合适的

一.简单的静态链表

#include<stdio.h>

struct Student

{

int num;

float score;

struct Student* next;

};

int main()

{

struct Student a, b, c, head, p;

a.num = 10101;a.score = 89.5;

b.num = 10103;b.score = 90;

c.num = 10107;c.score = 85;

head = &a;

a.next = &b;

b.next = &c;

c.next = NULL;

p = head;

do

{

printf("%ld %5.1f\n", p->num, p->score);

p = p->next;

} while (p != NULL);

return 0;

}

二.动态链表

知识要点连接

动态内存分配与指向它的指针变量

1.malloc 函数开辟动态存储区

void*malloc(unsigned int size);

内存的动态存储区分配一个长度为 size 的连续空间

malloc(100) //开辟 100 字节的临时分配域,函数值为其第一个字节的地址

2.calloc 函数开辟动态存储区

void*calloc(unsigned n,unsigned size);

内存的动态存储区分配 n 个长度为 size 的连续空间,空间较大,足以包含一个数组

n 为数组元素个数,每个元素长为 size

3.用 realloc 函数重新分配动态存储区

voidrealloc(voidp,unsigned int size);

改变动态空间的大小,用此函数重新分配

realloc(p,50)将 p 所指向的已分配动态空间改为 50 字节

4.用 free 释放动态存储区

void free(void*p);

free(p);释放 p 所指向的动态空间

以上四个函数声明在 #include<stdlid>中


函数技巧注意:


类型一.输入数字排顺序

这种问题相当于排顺序的问题

一般采用 swap 函数(无类型函数),如下

void swap(intp1,intp2)

{

int p;

p=p1;p1=*p2;*p2=p;

}


类型二.字符串排序

运用的仍然是 swap(这个名字自己起的)函数

void swap(charp1,charp2)

{

char p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}


提醒:字符串互换的主函数也需要注意

进行判断时候要用 strcmp 函数进行判断

开头要输入 #include<string.h>头文件


类型三.选择法进行排序

(循环语句的运用,本题用结构体数组举例,若未学习到,看中间部分了解算法即可)

struct Student temp; //temp 用于变换

const int n=5; //定义常变量

int i,j,k; //i,j 用于循环

for(i=0;i<n-1;i++)

{k=i;

for(j=i+1;j<n;j++)

if(stu[j].score>stu[i].score)

k=j;

temp=stu[k];stu[k]=stu[i];stu[i]=temp;

}


用户头像

梦醒了

关注

还未添加个人签名 2021.02.23 加入

还未添加个人简介

评论

发布
暂无评论
编程常见必备知识