c语言链表的建立于数据存储
我谢谢大家了。
由于初学,点数不多,请见谅,不能给大家分了。
相关推荐
计算机等级考试二级C语言链表复习资料
在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并不知道该班级的学生的人数,那么你就要把数组定义得足够大。
C语言链表PPT学习教案.pptx
C语言链表PPT学习教案.pptx
C语言单向建立链表的代码实现
C语言下单项链表的建立,包括选择建立个数与插入的结点数 基础问题
单链表-实验报告.doc
单链表实验报告 1. 实验目的与要求 1、实现单链表的建立; 2、掌握单链表的插入、删除和查找运算; 3、熟练进行C语言源程序的编辑调试。 2. 实验内容 (1)建立带表头结点的单链表; 首先输入结束标志,然后建立循环逐个输入数据,直到输入结束标志。 数据输入的函数为: LNode *createtail() { LNode *s,*r; int x,tag; printf("input the sign of ending:"); /*输入结束标志*/ scanf("%d",&tag); h=(LNode * )malloc(sizeof(LNode)); /*建立表头结点*/ h->data=tag; r=h; printf("input the data:"); scanf("%d",&x); while(x!=tag) /*建立循环逐个输入数据*/ { s=(LNode * )malloc(sizeof(LNode)); s->data=x; r->link=s; r=s; scanf("%d",&x); } r->link=NULL; return h; } (2)输出单链表中所有结点的数据域值; 首先获得表头结点地址,然后建立循环逐个输出数据,直到地址为空。 数据输出的函数为: void output(LNode *h) { LNode *r; int i; r=h; for(i=1;r->link!=NULL;i++) { printf("%d.%d\n",i,r->link->data); r=r->link; } } (3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插 入结点y; 建立两个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,建立循 环扫描链表。当当前结点指针域不为空且数据域等于x的时候,申请结点并给此结点 数据域赋值为y,然后插入当前结点后面,退出函数;当当前结点指针域为空的时候 ,申请结点并给此结点数据域赋值为y,插入当前结点后面,退出函数。 数据插入函数为: void insert(LNode *h) { LNode *r,*s; int x,y; printf("Input the data that you want to insert:\n"); printf("x="); scanf("%d",&x); /*输入x值*/ printf("y="); scanf("%d",&y); /*输入y值*/ r=h; r=r->link; for(;;r=r->link) { if(r->data==x) /*当当前结点指针域不为空且数据域等于x的时候…*/ { s=(LNode *)malloc(sizeof(LNode)); s->data=y; s->link=r->link; r->link=s; break; } if(r->link==NULL) /*当当前结点指针域为空的时候*/ { s=(LNode *)malloc(sizeof(LNode)); s->data=y; s->link=NULL; r->link=s; break; } } } (4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。 建立三个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,最后一 个备用;建立整形变量l=0;建立循环扫描链表。当当前结点指针域为空的时候,如 果当前结点数据域等于k,删除此结点,l++,跳出循环,结束操作;如果当前结点数 据域不等于k,跳出循环,结束操作。当当前结点指针域不为空的时候,如果当前结 点数据域等于k,删除此结点,l++,继续循环操作;如果当前结点数据域不等于k, 指针向后继续扫描。循环结束后函数返回变量l的值,l便是删除的结点的个数。 数据删除函数为: int del(LNode *h) { LNode *r,*s,*t; int k,l=0; printf("Input the data that you want to delete:"); scanf("%d",&k); r=h; s=r; r=r->link; for(;;) { if(r->link==NULL) /*当当前结点指针域为空的时候*/ { if(r->data==k) /*如果当前结点数据域不等于k…*/ { l++; s->link=NULL; free(r); break; } else break; /*如果当前结点数据域等于k…*/ } else /*当当前结点指针域不为空的时候*/ { if(r->data==k) /*如果当前结点数据域不等于k…*/ { l++; t=r; s->link=t->link; r=t->lin
C语言-链表.ppt
C语言-链表.ppt


