<强> 强>
<强>§1,强> <强>指向结构体变量的指针变量强>
<强>§2,强> <强>指向结构体数组的指针变量强>
<强>§3,强> <>强链表的概念强>
<强>§5,强> <>强链表的相关操作强>
# include & lt; stdio.h>,
# include & lt; conio.h>,
# include & lt; string.h>,
# include & lt; stdlib.h>
# define N 3
typedef结构节点{
,,char[20]名称;
,,结构节点*链接;
}螺栓;
螺柱*创造(int n)/*建立单链表的函数*/
{
,,螺栓* p * h *年代;
,我,int;
,,如果((h=(螺柱*)malloc (sizeof(螺栓)))==NULL)
,,{
,,,printf("不能分配内存空间!”);
,,,退出(0);
,,}
,,h→名称[0]=' \ 0;
,,h→链接=零;
,,p=h;
,,(我=0;i ,,{ ,,,如果((s=(螺柱*)malloc (sizeof(螺栓)))==NULL) ,,,{ ,,,,printf("不能分配内存空间!”); ,,,,退出(0); ,,,} ,,,p→链接=s; ,,,printf(“请输入第% d个人的姓名:“,我+ 1); ,,,scanf (“% s”s→名称), ,,,年代→链接=零; ,,s, p=, ,,} ,,返回(h); } 螺柱*搜索(螺柱* h, char * x)/*查找函数*/ { ,,螺栓* p; ,,char * y; ,,p=h→联系; ,,而(p !=NULL) ,,{ ,,,y=p→名称; ,,,如果(strcmp (y, x)==0) ,,,,返回(p); ,,其他,p=p→联系; ,,} ,,如果(p==NULL) ,,,printf("没有查找到该数据!”);}
螺柱* search3(螺柱* h, char * x),
/*另一个查找函数,返回的是上一个查找函数的直接前驱结点的指针,
h为表头指针,x为指向要查找的姓名的指针
其实此函数的算法与上面的查找算法是一样的,只是多了一个指针,并且年代总是指向指针p所指向的结点的直接前驱,
结果返回年代即是要查找的结点的前一个结点*/
{
,,螺栓* p *年代;
,,char * y;
,,p=h→联系;
,h, s=,
,,而(p !=NULL)
,,{
,,,y=p→名称;
,,,如果(strcmp (y, x)==0)
,,,,返回(s);
,,其他,
,,,{
,,,p, p=?
,,,,=年代→联系;
,,,}
,,}
,,如果(p==NULL)
,,printf("没有查找到该数据!”);}
空隙插入(螺柱* p)/*插入函数,在指针p后插入*/
{
,,char stuname [20],
,,螺栓*年代;/*指针年代是保存新结点地址的*/
,,如果((s=(螺柱*)malloc (sizeof(螺栓)))==NULL)
,,{
,,,printf("不能分配内存空间!”);
,,,退出(0);
,,}
,,printf(“请输入你要插入的人的姓名:”);
,,scanf (“% s”, stuname);
,,拷贝字符串(s→名称、stuname);/*把指针stuname所指向的数组元素拷贝给新结点的数据域*/
,=p, s→联系→联系;/*把新结点的链域指向原来p结点的后继结点*/
,,p→链接=s;/* p结点的链域指向新结点*/}
空白德尔(螺柱* x,螺栓* y)/*删除函数,其中y为要删除的结点的指针,x为要删除的结点的前一个结点的指针*/
{
,螺柱*年代;
,s=y;
,x→链接=y→链接;
,自由(s);
}
空白打印(螺柱* h)
{
,,螺栓* p;
,,p=h→联系;
,,printf("数据信息为:\ n”);
,,而(p !=NULL)
,,{
,,,printf (" % s \ n ",, * (p→名称));
,,p, p=?
,,}
}
无效退出()
{
,退出(0);
}
空白菜单(void)
{
,,系统(cls);,
,,printf (" \ \ t \ t单链表C语言实现实例\ n”);
,,printf (" \ \ t | - - - - - - - - - - - - - - - - - | \ n”);
,,printf (" \ \ t | | \ n”);
,,printf (" \ \ t |[1]建立新表| \ n”);
,,printf (" \ \ t |[2]查找数据| \ n”);
,,printf (" \ \ t |[3]插入数据| \ n”);
,,printf (" \ \ t |[4]删除数据| \ n”);
,,printf (" \ \ t |[5]打印数据| \ n”);
,,null