数据结构实验报告
}
return head; //返回头指针 }
//==========按值查找结点,找到则返回该结点的位置,否则返回
NULL==========
ListNode *LocateNode(LinkList head, char *key) {
ListNode *p=head->next; //从开始结点比较
while(p&&strcmp(p->data,key)!=0 ) //直到p为NULL或p-> data为key止
p=p->next; //扫描下一个结点
return p; //若p=NULL则查找失败,否则p指向找到的值
key的结点
}
//==========删除带头结点的单链表中的指定结点======= void DeleteList(LinkList head,char *key) {
ListNode *p,*r,*q=head;
p=LocateNode(head,key); //按key值查找结点的 if(p==NULL ) { //若没有找到结点,退出 printf(\ exit(0);
5
数据结构实验报告
}
while(q->next!=p) //p为要删除的结点,q为p的前结点 q=q->next; r=q->next; q->next=r->next;
free(r); //释放结点 }
//===========打印链表======= void printlist(LinkList head) {
ListNode *p=head->next; //从开始结点打印 while(p){
printf(\ p=p->next; }
printf(\}
//==========删除所有结点,释放空间=========== void DeleteAll(LinkList head) {
ListNode *p=head,*r; while(p->next){
6
数据结构实验报告
r=p->next; free(p); p=r; } free(p); }
运行结果:
加的添加结点的代码:
int Insert(ListNode *head) // the insert function {
7
ListNode *in,*p,*q; int wh;
printf(\
数据结构实验报告
}
in=(ListNode *)malloc(sizeof(ListNode));in->next=NULL; p=(ListNode *)malloc(sizeof(ListNode));p->next=NULL; q=(ListNode *)malloc(sizeof(ListNode));q->next=NULL; if(!in)
return 0;
scanf(\
printf(\scanf(\
for(p=head;wh>0;p=p->next,wh--); q=p->next; p->next=in; in->next=q; return 1;
运行结果:
8
相关推荐: