C语言学习资源

1.函数的

2.Intmain ()

 {

 

 char *srcStr = "hello qingyun";

 char destStr[100] = {0};

 

Strcyp(destStr,src Str);

Printf("=======%s=======\n",destStr);

 

Chat*another SstStr = NULL;

 anotherDstStr = (char*)malloc(14);

Strcype(anotherDstStr,srcStr);

Printf("---------%s----------",anotherDstStr);

Free (anotherDstStr);

}

http://www.codingke.com/course/160/learn#lesson/330

http://www.kaikeba.com

学生成绩管理系统思路及一些主要结构举例

学生成绩管理系统的增删改查

转自爱城轨

#include <stdio.h>

#include <stdlib.h>

struct grade

 {

    int score;

    struct grade*next;  

 };

typedef struct grade NODE;  //typedefC语言的关键字,作用是为一种数据类型定义一个新名字。

                            //使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,

       //另一个是简化一些比较复杂的类型声明。

 struct grade*create();   //创建链表 

 void insert(NODE*head,NODE *pnew,int i);   //插入链表 

 void pdelete(NODE*head,int i);   //删除列表 

 void display(NODE*head);   //输出链表 

 void Pfree(NODE*head);    //销毁链表 

 

int main(int argc, char *argv[])

{

 struct grade *head,*pnew;

 head=create(); 

 if(head==NULL)

 return 0;

 printf("输出创建的链表:");

 display(head);

 pnew=(NODE*)malloc(sizeof(NODE));

 if(pnew==NULL)

 {

  printf("创建失败!");

  return 0;

 }

 pnew->score=88;

 insert(head,pnew,3);   //将新节点插入节点3的后面 

 printf("插入后的链表:");

 display(head);

 pdelete(head,3);  //删除节点

 printf("删除后的链表:");

 display(head);

 Pfree(head);

 return 0;

}

struct grade *create()

{

 NODE *head,*tail,*pnew;

     int score;

    head=(NODE*)malloc(sizeof(NODE));  //创建头节点。 

  if(head==NULL)  //创建失败返回 

  {

   printf("创建失败!");

   return NULL;

   }

   head->next=NULL;  //头节点指针域置NULL

 tail=head;  // 开始时尾指针指向头节点

 printf("输入学生成绩:");

 while(1)   //创建链表 

 {

  scanf("%d",&score);

  if(score<0) //成绩为负是退出循环 

    break;

  pnew=(NODE*)malloc(sizeof(NODE));  //创建新节点 

  if(pnew==NULL) //创建失败返回 

  {

   printf("创建失败!");

   return NULL;

  }  

  pnew->score=score; //新节点数据域存放输入的成绩 

  pnew->next=NULL;  //新节点指针域置NULL 

  tail->next=pnew; //新节点插入到表尾 

  tail=pnew;  //为指针指向当前的尾节点 

 } 

 return head;  //返回创建链表的头指针 

}

void insert(NODE *head,NODE *pnew,int i)

{

 NODE *p;

 int j;

    

    p=head;

   for(j=0;j<i&&p!=NULL;j++)  //p指向要插入的第i个节点 

     p=p->next;

   if(p==NULL)  //节点i不存在 

 {

  printf("与插入的节点不存在!");

  return;

 }  

 

 pnew->next=p->next;  //插入节点的指针域指向第i个节点的后继节点 

 p->next=pnew;   //犟第i个节点的指针域指向插入的新节点 

} 

void pdelete(NODE *head,int i)

{

 NODE *p,*q;

 int j;

 if(i==0)  //删除的是头指针,返回 

   return;

 p=head;

 for(j=1;j<i&&p->next!=NULL;j++)

  p=p->next;  //p指向要删除的第i个节点的前驱节点 

 if(p->next==NULL) //表明链表中的节点不存在 

 {

  printf("不存在!");

  return;

 }  

 q=p->next;  //q指向待删除的节点 

 p->next=q->next; //删除节点i,也可写成p->next=p->next->next 

 free(q);   //释放节点i的内存单元 

}

void display(NODE *head)

{

 NODE *p;

 for(p=head->next;p!=NULL;p=p->next)

   printf("%d",p->score);

 printf("\n");  

} 

void pfree(NODE *head)

{

 NODE *p,*q;

 

 p=head;

 while(p->next!=NULL)   //每次删除头节点的后继节点 

 {

  q=p->next;   

  p->next=q->next;

  free(q);

 }

 free (head);  //最后删除头节点 

}

void Pfree(NODE *head)

{

 NODE *p,*q;

 p=head;

 while(p->next!=NULL)

 {

  q=p->next;

  p->next=q->next;

  free(q);

 }

 free(p);

}

链表是C语言中比较难,但是又比较重要的数据结构,相信有很多人在为它而头痛哦。

我做了一个链表的程序,发出来与大家共享,希望大家能用得着。

 

 

#include<stdio.h>

#include<malloc.h>

#include<conio.h>

#include<stdlib.h>

//链表单元定义,链表相关变量

struct student

{

int id;

float score;

struct student*next;

} *head,*pthis;

//输入数据创建链表

void input()

{

struct student*tmp;

printf("\n\n请输入学生的信息以学号为0结束:\n");

do

{

……

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值