鱼C论坛

 找回密码
 立即注册
查看: 2555|回复: 0

[学习笔记] 静态链表,初始化、输入、打印、删除、插入

[复制链接]
发表于 2021-9-11 18:17:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码:

  1. #include <stdio.h>
  2. #define MAXSIZE 1000

  3. typedef struct
  4. {
  5.         char date;
  6.         int cur;
  7. }nice;

  8. nice * InitList(nice space[]);        //初始化数组
  9. nice * getList(nice space[]);        //输入数据
  10. void PrinList(nice space[]);        //打印数组
  11. nice * deleList(nice space[]);        //删除特定的数据
  12. nice * insertList(nice space[]);        //插入数据

  13. nice * insertList(nice space[])
  14. {
  15.         char T;
  16.         int i = 0, temp, ctemp;
  17.         T = getchar();
  18.         getchar();

  19.         while (1)
  20.         {
  21.                 if (i == 0)
  22.                 {
  23.                         i = space[MAXSIZE - 1].cur;
  24.                 }
  25.                 else
  26.                 {
  27.                         i = space[i].cur;
  28.                 }
  29.                 if (space[i].date == T)
  30.                 {
  31.                         temp = space[space[0].cur].cur;        //把0数组的下一位数组单独提取出来
  32.                         space[temp].date = getchar();
  33.                         getchar();

  34.                         /*if (space[MAXSIZE - 1].cur == i)        //前插
  35.                         {
  36.                                 space[space[0].cur].cur = space[temp].cur;        //把最后两个链表连接起来
  37.                                 space[temp].cur = space[MAXSIZE - 1].cur;        //把第一个链表的下标给与temp下标的cur
  38.                                 space[MAXSIZE - 1].cur = temp;                                //把第一个链表数组更改为temp(最后一个数组中的cur是记录谁是第一个带数据数组的)
  39.                         }
  40.                         else
  41.                         {
  42.                                 space[space[0].cur].cur = space[temp].cur;        //把最后两个链表连接起来
  43.                                 space[temp].cur = i;                                                //把单独腾挪出来的数组数值储存段赋予本次数组数值
  44.                                 space[ctemp].cur = temp;                                        //把单独腾挪出来的数组的下标赋值给上一个数组的cur位置
  45.                                        
  46.                         }*/

  47.                         //后插
  48.                         space[space[0].cur].cur = space[temp].cur;
  49.                         space[temp].cur = space[i].cur;
  50.                         space[i].cur = temp;



  51.                         break;
  52.                 }
  53.                 ctemp = i;                //用于前插得变量
  54.         }


  55.         return space;
  56. }

  57. nice * deleList(nice space[])
  58. {
  59.         char T;
  60.         int i = 0, temp;

  61.         T = getchar();
  62.         getchar();

  63.         while (1)
  64.         {
  65.                
  66.                 if (i == 0)
  67.                 {
  68.                         i = space[MAXSIZE - 1].cur;
  69.                 }
  70.                 else
  71.                 {
  72.                         i = space[i].cur;
  73.                 }
  74.                 if (space[i].date == T)
  75.                 {
  76.                         if (space[MAXSIZE - 1].cur == i)
  77.                         {
  78.                                 space[MAXSIZE - 1].cur = space[i].cur;
  79.                                 space[i].cur = space[space[0].cur].cur;
  80.                                 space[space[0].cur].cur = i;
  81.                                
  82.                         }
  83.                         else
  84.                         {
  85.                                 space[temp].cur = space[i].cur;
  86.                                 space[i].cur = space[space[0].cur].cur;
  87.                                 space[space[0].cur].cur = i;       
  88.                         }
  89.                        
  90.                         break;
  91.                 }
  92.                 temp = i;
  93.         }

  94.         return space;
  95. }

  96. nice * getList(nice space[])
  97. {

  98.         if (space[MAXSIZE - 1].cur == MAXSIZE)
  99.         {                               
  100.                 space[MAXSIZE - 1].cur = 1;
  101.         }

  102.         space[space[0].cur].date = getchar();
  103.         getchar();
  104.         space[0].cur = space[space[0].cur].cur;
  105.         return space;
  106. }

  107. void PrinList(nice space[])
  108. {
  109.         int i = 0;

  110.         while (1)
  111.         {
  112.                
  113.                 if (i == 0)
  114.                 {
  115.                         i = space[MAXSIZE - 1].cur;
  116.                 }
  117.                 else
  118.                 {
  119.                         i = space[i].cur;
  120.                 }

  121.                 if (space[0].cur == i)
  122.                 {
  123.                         break;
  124.                 }
  125.                 printf("<%d:%c>",space[i].cur, space[i].date);

  126.                
  127.         }
  128. }

  129. nice * InitList(nice space[])
  130. {
  131.         int i = 0;

  132.         for (i = 0; i <= MAXSIZE -1; i++)
  133.         {
  134.                 space[i].cur = i + 1;
  135.         }

  136.         return space;
  137. }


  138. int main()
  139. {
  140.         int T;
  141.         nice space[MAXSIZE];
  142.         while (1)
  143.         {
  144.                 printf("输入选项:");
  145.                 scanf("%d", &T);
  146.                 getchar();
  147.                
  148.                 switch(T)
  149.                 {
  150.                 case 1:{
  151.                         InitList(space);        //初始化数组
  152.                         break;
  153.                            }
  154.                 case 2:{
  155.                         getList(space);                //输入数据
  156.                         break;
  157.                            }
  158.                 case 3:{
  159.                         deleList(space);        //删除数据
  160.                         break;
  161.                            }
  162.                 case 4:{
  163.                         insertList(space);        //插入数据
  164.                         break;
  165.                            }
  166.                 case 9:{
  167.                         PrinList(space);        //打印数组
  168.                         putchar('\n');
  169.                         break;
  170.                            }
  171.                 case 0:{
  172.                         return 0;
  173.                            }
  174.                 }
  175.         }
  176.        
  177.         return 0;
  178. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表