源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言链表操作示例分享

  • 时间:2020-08-10 10:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言链表操作示例分享
[u]复制代码[/u] 代码如下:
#include <stdio.h> #include <stdlib.h> #include <conio.h> /*以下是为了构建线性链表而定义的结构体*/ typedef struct chaink{     char c;     struct chaink * next;     }ck; ck * chain(ck *,int); int print(ck *,int); /*以下是main函数*/ int main(void){     printf("这是一个线性链表试验程序。\n");     ck * head=NULL;     int k;     k=sizeof(ck);     do{         head=chain(head,k);         printf("是否要结束程序?若结束,请按y/Y;按其他键继续录入。\n");         if(getch()=='y' && getch()=='Y'){             printf("程序结束。\n");             getch();             break;             }                }while(1);     return 0;     } /*以下是为了演示线性链表而试着编写的程序模块*/ ck * chain(ck * head,int k){     ck * next=NULL;/*扫描链表时要用到的临时局部变量*/     ck * temp=NULL;/*插入新结点时要用到的临时局部变量*/     int i=0;/*隔壁print函数依赖的一个参数*/     if(head==NULL){         head=(ck*)malloc(k);/*创建一个空的数据节点,第一个数据节点*/         if(head==NULL){             printf("malloc内存错误!");             getch();             exit(1);             }/*检验刚刚是否已经成功创建数据节点*/         printf("头结点已成功创建,其地址为%p。\n",head);         head->next=NULL;         head->c='0'; /*初始化头结点*/         }        do{/*以从HEAD结点之后处插入新数据节点的方式接收录入的数据*/         printf("是否要录入新数据?若录入,请按y/Y;按其他键结束录入。\n");         if(getch()!='y' && getch()!='Y'){             printf("录入结束。\n");             getch();             break;             }                     temp=head->next;/*储存头节点指针域的数据*/         head->next=(ck*)malloc(k);/*创建一个新节点*/         if(head->next==NULL){             printf("malloc内存错误!");             getch();             exit(1);             }/*检验刚刚是否已经成功创建数据节点*/         next=head->next;/*扫描到新创建的节点*/         next->next=temp;/*给新节点的指针域赋值*/         printf("请录入新数据……\n");         next->c=getch();/*给新节点的数据域赋值*/         if(next->c==-1){             printf("系统录入端错误!");             getch();             exit(1);             }         printf("新数据录入成功。录入的新数据为%c,其数据节点的地址为%p。\n",next->c,next);/*反馈*/     }while(1);/*以从HEAD结点之后处插入新数据节点的方式接收录入的数据(结束)*/     if(head->next==NULL){/*数据打印环节*/         printf("数据链表里现在没有数据。\n");         getch();        }     else{         printf("是否要显示链表中所有的数据及其地址?若要显示,请按y/Y;按其他键跳过。\n");         if(getch()!='y' && getch()!='Y'){             printf("跳过。\n");             getch();             return head;             }         printf("现在输出链表的内容……\n 序号 数据 指针\n");         for(next=head->next;next!=NULL;next=next->next){             i=print(next,i);/*调用打印链表用的函数*/             }     }/*数据打印环节(结束)*/     return head;        } /*以下是打印链表用的函数*/ int print(ck * next,int i){     printf("   %d    %c    %p\n",i,next->c,next);     i++;     return i;     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部