现在的位置: 首页 > 综合 > 正文

数据结构C语言>基本链表>

2013年04月10日 ⁄ 综合 ⁄ 共 7298字 ⁄ 字号 评论关闭

数据结构C语言>基本链表>使用malloc()函数分配一块浮点数内存

使用malloc()函数分配一块浮点数内存
#include <stdio.h>
#include 
<stdlib.h>

int main(int argc, char *argv[])
{
   
float *fp;                            /* 浮点指标宣告     */

   fp = (float *) malloc(sizeof(float)); /* 配置浮点数记忆体 */
   
if ( !fp )                            /* 检查指标         */
   {
      printf(
"内存分配失败! \n");
      exit(
1);
   }
   
*fp = 3.1415926;                      /* 设定变数值       */
   printf(
"圆周率: %10.8f \n",*fp);      /* 列出结果         */
  system(
"PAUSE");
  
return 0;
}

数据结构C语言>基本链表>使用内存动态分配重写程序

计算英文平均成绩(动态记忆体配置)
/* ======================================== */
/*    程式实例: 3_1_1b.c                  */
/*    计算英文平均成绩(动态记忆体配置)      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

int main(int argc, char *argv[])
{
   
int *score;                    /* 整数指标宣告 */
   
int i;
   
int num;                       /* 学生人数     */
   
int sum;                       /* 成绩总分变数 */
   
float ave;                     /* 平均成绩变数 */

   sum = 0;                       /* 设定总分初值 */
   printf(
"请输入学生人数 ==> ");
   scanf(
"%d",&num);              /* 读取学生人数 */
   
/* 配置成绩阵列的记忆体 */
   score 
= (int *) malloc(num * sizeof(int));
   
if ( !score )                  /* 检查指标     */
   {
      printf(
"内存分配失败! \n");
      exit(
1);
   }
   
for ( i = 0; i < num; i++ )
   {
      printf(
"请输入英语成绩. ==> ");
      scanf(
"%d",&score[i]);      /* 读取英文成绩 */
      sum 
+= *(score + i);        /* 计算总分     */
   }
   ave 
= (float) sum / (float) num;  /* 计算平均  */
   printf(
"平均成绩: %6.2f \n",ave);
   system(
"PAUSE");
   
return 0;
}

数据结构C语言>基本链表>使用内存动态分配重写程序2

计算英文平均成绩(动态记忆体配置)2
/* ======================================== */
/*    程式实例: 3_1_1c.c                  */
/*    计算英文平均成绩(动态记忆体配置)      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

int main(int argc, char *argv[])
{
   
struct grade                   /* 成绩结构宣告     */
   {
      
int math;                   /* 数学成绩         */
      
int english;                /* 英文成绩         */
      
int computer;               /* 电脑成绩         */
   };
   
struct grade *student;         /* 结构阵列变数宣告 */
   
int i;
   
int num;                       /* 学生人数         */
   
int m_sum,e_sum,c_sum;         /* 各科成绩总分变数 */
   
float m_ave,e_ave,c_ave;       /* 各科平均成绩变数 */

   m_sum = e_sum = c_sum = 0;     /* 总分初值         */
   printf(
"请输入学生人数 ==> ");
   scanf(
"%d",&num);              /* 读取学生人数     */

   student = (struct grade *)     /* 配置记忆体       */
             malloc(num 
* sizeof(struct grade));
   
if ( !student )                /* 检查指标         */
   {
      printf(
"内存分配失败! \n");
      exit(
1);
   }
   
for ( i = 0; i < num; i++ )
   {
      printf(
"学生编号: %d\n",i + 1);
      printf(
"请输入数学成绩. ==> ");
      scanf(
"%d",&student[i].math);     /* 读取数学成绩 */
      m_sum 
+= student[i].math;         /* 计算数学总分 */
      printf(
"请输入英语成绩. ==> ");
      scanf(
"%d",&student[i].english);  /* 读取英文成绩 */
      e_sum 
+= student[i].english;      /* 计算英文总分 */
      printf(
"请输入计算机成绩. ==> ");
      scanf(
"%d",&student[i].computer); /* 读取电脑成绩 */
      c_sum 
+= student[i].computer;     /* 计算电脑总分 */
   }
   m_ave 
= (float) m_sum / (float) num; /* 计算数学平均 */
   e_ave 
= (float) e_sum / (float) num; /* 计算英文平均 */
   c_ave 
= (float) c_sum / (float) num; /* 计算电脑平均 */
   printf(
"数学平均成绩: %6.2f \n",m_ave);
   printf(
"英语平均成绩: %6.2f \n",e_ave);
   printf(
"计算机平均成绩: %6.2f \n",c_ave);
   
   system(
"PAUSE");
   
return 0;
}

数据结构C语言>基本链表>动态内存的分配和释放

动态内存的分配和释放
/* ======================================== */
/*    程式实例: 3_1_2.c                  */
/*    浮点数内存分配和释放      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

int main(int argc, char *argv[])
{
   
float *fp;
   
   fp
=(float *)malloc(sizeof(float));
   
if(!fp)
   {
    printf(
"内存分配失败! \n");       
    exit(
1);
          
   }
   
*fp=3.1415926;
   printf(
"圆周率:%10.8f \n",*fp);
   free(fp);
   
   system(
"PAUSE");
   
return 0;
}

数据结构C语言>基本链表>链表的创建>动态数据结构的声明和内存分配

动态数据结构的声明和内存处理
/* ======================================== */
/*    程式实例: 3_2_2.c                  */
/*    动态数据结构的声明和内存处理      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

struct llist //链表结构声明 
{
    
int num;  //邮寄编号 
    char name[50];  //邮寄姓名 
    char address[50];  //邮寄地址 
    struct llist *next;    //指向下一标签   
};
typedef 
struct llist node;  //定向新类型 
typedef node *llink;  //定义新类型指针 

int main(int argc, char *argv[])
{
   llink ptr;
   ptr
=(llink)malloc(sizeof(node));  //分配内存 
   if(!ptr)  //检查指针 
   {
           printf(
"内存分配失败! \n");
           exit(
1);
   } 
   printf(
"请输入编号==>");
   scanf(
"%d",&ptr->num);  //读取编号 
   printf("请输入姓名==>");
   scanf(
"%s",&ptr->name);  //读取姓名 
   printf("请输入地址==>");
   scanf(
"%s",&ptr->address);  //读取地址 
   ptr->next=NULL;  //设置指针初始值 
   
   printf(
"邮寄数据:\n");  //输出数据项 
   printf("编号:%d\n",ptr->num);
   printf(
"  姓名:%s\n",ptr->name);
   printf(
"  地址:%s\n",ptr->address);
   
   
   system(
"PAUSE");
   
return 0;
}

数据结构C语言>基本链表>链表的创建>使用链表将邮寄名单用动态数据结构存储,然后输出

链表的创建
/* ======================================== */
/*    程式实例: 3_2_3a.c                  */
/*    链表的创建      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

struct llist  //链表结构声明 
{
 
int num;  //邮寄编号 
 char name[10];  //邮寄姓名 
 struct llist *next;    //指向下一个标签              
};
typedef 
struct llist node;  //定义新类型 
typedef node *llink;  //定义新类型指针 

int main(int argc, char *argv[])
{
   llink head;  
//链表的开始指针 
   llink ptr;
   
int i;
   
   head
=(llink)malloc(sizeof(node));  //分配内存 
   if(!head)  //检查指针 
   {
    printf(
"内存分配失败!\n");
    exit(
1);         
   }
   head
->next=NULL;  //设置指针初始值 
   ptr=head;  //将ptr指向链表开始 
   printf("输入六项邮寄数据:\n");
   
for(i=0;i<6;i++)  //创建其他结点循环 
   {
    printf(
"请输入编号==> ");
    scanf(
"%d",&ptr->num);  //读取编号
    printf("请输入编号(%d)的姓名==> ",ptr->num); 
    scanf(
"%s",&ptr->name);
    ptr
->next=(llink)malloc(sizeof(node));
    
if(!ptr->next)
    {
     printf(
"内存分配失败!\n");
     exit(
1);              
    }
    ptr
->next->next=NULL; //设置下个指针初始值 
    ptr=ptr->next;  //指向下一结点 
   }
   printf(
"邮寄数据:\n");
   ptr
=head;
   
for(i=0;i<6;i++)
   {
     printf(
"编号:%d\n",ptr->num);
     printf(
"  姓名:%s\n",ptr->name);              
     ptr
=ptr->next;
   }
   
   
   system(
"PAUSE");
   
return 0;
}

数据结构C语言>基本链表>链表的创建>使用链表将邮寄名单用动态数据结构存储,然后输出

3_2_3b
/* ======================================== */
/*    程式实例: 3_2_3b.c                  */
/*    链表的创建      */
/* ======================================== */
#include 
<stdio.h>
#include 
<stdlib.h>

struct llist
{
 
int num;
 
char name[10];
 
struct llist *next;        
};
typedef 
struct llist node;
typedef node 
*llink;

int main(int argc, char *argv[])
{
   llink head; 
//链表的开始指针 
   llink ptr,ptr1;
   
int i;
   
   
//创建第一结点
   head=(llink)malloc(sizeof(node));
   
if(!head)//检查内存分配 
   {
       printf(
"内存分配失败!\n");
    exit(
1);            
   } 
   printf(
"输入六项邮寄数据:\n");
   printf(
"请输入编号==> ");
   scanf(
"%d",&head->num);//读取编号 
   printf("请输入编号(%d)的姓名 ==> ",ptr->num);
   scanf(
"%s",head->name);//读取姓名
   head->next=NULL;//设置指针初值
   ptr=head;//将ptr指向链表开始
   for(i=1;i<6;i++)
   {
       ptr1
=(llink)malloc(sizeof(node));
    
if(!ptr1)
    {
     printf(
"内存分配失败!\n");
     exit(
1);   
    }
    printf(
"请输入编号==> ");
    scanf(
"%d",&head->num);//读取编号 
    printf("请输入编号(%d)的姓名 ==> ",ptr->num);
    scanf(
"%s",ptr1->name);//读取姓名
    ptr1->next=NULL;//设置指针初值 
    ptr->next=ptr1;//连接结点 
    ptr=ptr->next;//指向下一结点       
   } 
   
   printf(
"邮寄资料:\n");
   ptr
=head;
   
for(i=0;i<6;i++)
   {
    printf(
"编号:%d\n",ptr->num);
    printf(
"    姓名:%s\n",ptr->name);
    ptr
=p

抱歉!评论已关闭.