快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱到h88285:链表的C语言实现之单链表的插入运算



假设在一个单链和记娱到h88285表中存在2个继续结点p、q(此中p为q的直接先驱),若我们必要在p、q之间插入一个新结点s,那么我们必须先为s分配空间并赋值,然后使p的链域存储s的地址,s的链域存储q的地址即可。(p->link=s;s->link=q),这样就完成了插入操作。

下例是利用插入算法的一个例子:

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#define N 10

typedef struct node

{

char name[20];

struct node *link;

}stud;

stud * creat(int n) /*建立单链表的函数*/

{

stud *p,*h,*s;

int i;

if((h=(stud *)malloc(sizeof(stud)))==NULL)

{

printf("不能分配内存空间!");

exit(0);

}

h->name[0]='\0';

h->link=NULL;

p=h;

for(i=0;i<n;i++)

{

if((s= (stud *) malloc和记娱到h88285(sizeof(stud)))==NULL)

{

printf("不能分配内存空间!");

exit(0);

}

p->link=s;

printf("请输入第%d小我的姓名:",i+1);

scanf("%s",s->name);

s->link=NULL;

p=s;

}

return(h);

}

stud * search(stud *h,char *x) /*查找函数*/

{

stud *p;

char *y;

p=h->link;

while(p!=NULL)

{

y=p->name;

if(strcmp(y,x)==0)

return(p);

else p=p->link;

}

if(p==NULL)

printf("没有查找到该数据!");

}

void insert(stud *p) /*插入函数,在指针p后插入*/

{

char stuname[20];

stud *s; /*指针s是保存新结点地址的和记娱到h88285*/

if((s= (stud *) malloc(sizeof(stud)))==NULL)

{

printf("不能分配内存空间!");

exit(0);

}

printf("请输入你要插入的人的姓名:");

scanf("%s",stuname);

strcpy(s->name,stuname); /*把指针stuname所指向的数组元素拷贝给新结点的数据域*/

s->link=p->link; /*把新结点的链域指向原本p结点的后继结点*/

p->link=s; /*p结点的链域指向新结点*/

}

main()

{

int number;

char fullname[20]; /*保存输入的要查找的人的姓名*和记娱到h88285/

stud *head,*searchpoint;

num和记娱到h88285ber=N;

head=creat(number); /*建立新链表并返回表头指针*/

printf("请输入你要查找的人的姓名:");

scanf("%s",fullname);

searchpoint=search(head,fullname); /*查找并返回查找到的结点指针*/

insert(searchpoint); /*调用插入函数*/

}

您可能还会对下面的文章感兴趣: