用结构体创建静态链表

34 篇文章 1 订阅
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct  student)
struct  student
{  char num[8];
   char name[8];
   char sex[2];
   int age;
   struct student *next;
} stu[10];

int main()
{ 
  struct student *p,*pt,*head;  //分别为指向任意借点、中间节点、头结点的指针
  int i,length,iage,flag=1;
  int find=0;            //找到待删除元素 find=1,否则find=0
  while (flag==1)
   {printf("input length of list(<10):");
    scanf("%d",&length);
    if (length<10)
      flag=0;
   }
  //开始建立链表 
  for (i=0;i<length;i++)
     {
	  p=(struct student *) malloc(LEN);
      if (i==0)
	  head=pt=p;
      else
	    pt->next=p;
      pt=p;
      printf("NO.:");
      scanf("%s",p->num);
      printf("name:");
      scanf("%s",p->name);
      printf("sex:");
      scanf("%s",p->sex);
      printf("age:");
      scanf("%d",&p->age);
    }
  p->next=NULL;
  p=head;
  printf("\n NO.    name    sex  age\n");      //显示结果  
  while(p!=NULL)
     {printf("%4s%8s%6s%6d\n",p->num,p->name,p->sex,p->age);
      p=p->next;
     }

   //开始删除元素  
  printf("input age:");          //输入待删年龄  
  scanf("%d",&iage);
  pt=head;
  p=pt;
  if (pt->age==iage)           //链头是待删元素
    {p=pt->next;
     head=pt=p;
     find=1;
    }
  else                        //链头不是待删元素
  pt=pt->next;
  while (pt!=NULL)
    {if (pt->age==iage)
      {p->next=pt->next;
       find=1;
      }
     else                     // 中间结点不是待删元素
       p=pt;
     pt=pt->next;
    }
  if (!find)
    printf(" not found  %d.",iage);

  p=head;
  printf("\n NO.    name    sex  age\n"); //显示结果
  while (p!=NULL)
    {printf("%4s%8s",p->num,p->name);
     printf("%6s%6d\n",p->sex,p->age);
     p=p->next;
    }
  return 0;
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值