//1111111111111
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"
typedef struct node
{
char data[10];
struct node *next;
}ListNode;
typedef ListNode *LinkList;
LinkList CreatListRl();
ListNode *LocateNode();
void DeleteList();
void printlist();
void DeleteAll();
void insert();
//asfjla;sf
void main()
{
char *ch,*num;
LinkList head;
head=CreatListRl();
printlist(head);
printf ("Delete node (y/n):");
scanf("%s",num);
if(strcmp(num,"y")==0||strcmp(num,"Y")==0){
printf("Plesae input Delete_data:");
scanf("%s",ch);
DeleteList(head,ch);
printlist(head);
}
DeleteAll(head);
}
//asljflasjklfjaslfjlasdjfl
Linklist CreatlistRl(void)
{
char *ch;
linklist head=(Linklist)malloc(sizeof(ListNode));
ListNode *s,*r,*pp;
r=head;
r->next=NULL;
printf("Input # toend ");
printf("please input Node_data:");
scanf("%s",ch);
while(strcmp(ch,"#")!=0){
pp=LocateNode(head,ch);
if(pp==NULL)
{
s=(ListNode *)malloc(sizeof(ListNode));
strcpy(s->data,ch);
r->next=s;
r=s;
r->next=NULLL;
}
printf("Input # toend ");
printf("please input node_data:");
scanf("%s",ch);
}
return head;
}
ListNode *LocateNode(LinkList head ,char *key)
{
ListNode *p=head->next;
while(strcmp(p->data,key)!=0 && p)
p=p->next;
return p;
}
//33333333333
void DeleteList(LinkList head,char *key)
{
ListNode *p,*r,*q=head;
p=LocateNode(head,key);//按key值查找结点的
if(p==NULL){
printf("position error");
exit(0);
}
while(q->next!=p)//p为要删除的结点,q为p的前结点
q=q->next;
r=q->next;
q->next=r->next;
free(r);//shifangjiedian
//=====打印链表=======//
void printlist(LinkList head)
{
ListNode *p=head->next;//dayin
while(p){
printf("%s, ",p->data);
p=p->next;
}
printf("\n");
}
//=================================//
void DeleteAll(LinkList head)
{
ListNode *p=head,*r;
while(p->next){
r=p->next;
free(p);
p=r;
}
free(p);
}
在c++里运行不出急求
高手赶紧侃侃吧
|