资源描述:
《软件技术-链表.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、链表的基木操作(有错请指出)1、尾插法建立链表nodecrtl_link()node*head,*p,*s;intx;head=(node*)malloc(sizeof(node));p=head;scanf("%d”,&x);while(x>0){s=(node*)malloc(sizeof(node));s->data=x;p->next=s;p=s;scanf(“%d",&x);}p->next=NULL;p=head;head=head->next;free(p);//删除头结点retu
2、rn(head);头插法建立链表node*crt2_list()charch;node*head,*s;head=NULL;ch=getchar();while(ch!=,,){s=(node*)malloc(sizeof(node));s->data=ch;s->next=head;head=s;ch=getchar();}return(head);}3、按序号查找1在链表中查找第i个结点,找到返I叫该结点地址,没有找到返I川NULL。node*findljink_list(node*head
3、,inti){node*p;intj=l;p=head->next;while(p!=NULL&&jvi){p=p->next;j++;}if(j==i)return(p);elsereturn(NULL);4、按序号查找2在链表中查找第i个结点,找到返I叫该结点地址,没有找到返I川NULL。node*find2_link_list(node*head,inti){node*p;intj;p=head;while(p->next!=NULL&&jnext;j++;}return(p
4、);}5、按值查找1在链表屮查找值为x的结点,找到返冋该结点地址,没有找到返冋NULL。node*find1_link_list(node*head,intx){node*p;p=head->next;vvhile(p->data!=x&&p!=NULL)p=p->next;if(p==NULL)p「intf(“Nofind!”);elseprintf("find.!'');return(p);}6、按值杏找2在链表屮查找值为x的结点,找到返冋该结点前驱结点的地址,没有找到返冋NULL。node*f
5、ind2_link_list(node*head,intx){node*p,*q;p=head->next;vvhile(p!=NULL&&p->data!=x){q=p;p=p->next;}return(q);}7、按值查找3在链表屮查找值为x的结点,找到返冋该结点前驱结点的地址,没有找到返冋NULL。node*find3_link_list(node*head,intx){node*q;p=head;while(p->next!=NULL&&p->next->data!=x){p=p->nex
6、t;)return(q);}8、插入1将值为b的新元素插入到链表结点x之后。voidinsl_link」ist(node*head,intb,intx){node*s;s=(node*)malloc(sizeof(node));s->data=b;if(head->next==NULL){head->next二s;sonext=NULL;return;}p=findl_link_list(head,x);if(p!=NULL){s->next=p->next;p->next=s;return;)将新
7、元索b插入到链表结点xZ前。voidins2_link_list(node*head,intx,intb){node*p,*s;s=(node*)malloc(sizeof(node));s->data=b;if(head->next==NULL){head->next=s;s->next=NULL;「etum;}p=find2_link_list(head,x);if(p->next!=NULL&&p!=NULL){s->next=p->next;p->next=s;return;})9、删除(按
8、值删除)删除链表屮值为x个结点。voiddel」ink_list(node*head,intx){node*p,*r;if(head->next==NULL){printf("Empty!‘‘);return;}p=find2_link_list(head,x);if(p->next!=NULL){r=p->next;p・>free(r);}return;)10、线性表的应用(约瑟夫环的求解)题目:有n只猴了选大王。选举的方法是所有猴子按1,2,3,……,n编号,围作