演算法與資料結構之單鏈表
阿新 • • 發佈:2018-11-14
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
從終端輸入一組整數,以0作為結束標誌,將這一簇整數存放在一個連結串列中(不包括0),打印出該連結串列中的值,然後刪除連結串列中的第五個元素,打印出刪除後的結果。
mian.c
#include "stdio.h"typedef int ElemType;typedef struct node{ ElemType data; /*資料域*/ struct node *next; /*指標域*/}LNode,*LinkList;LinkList GreatLinkList(int n){ LinkList p,r,list=NULL; ElemType e; int i; for(i=1;i<=n;i++){ scanf("%d",&e); p=(LinkList)malloc(sizeof(LNode)); p->data=e; p->next=NULL; if(!list) list=p; else r->next=p; r=p; } return list;}void insertList(LinkList *list,LinkList q,ElemType e){ LinkList p; p=( LinkList)malloc(sizeof(LNode)); p->data=e; if(!*list){ *list=p; p->next=NULL; } else{ p->next=q->next; q->next=p; } }void delLink(LinkList *list ,LinkList q){ LinkList r; if(q==list){ *list=q->next; free(q); } else{ for(r=*list;r->next!=q;r=r->next); if(r->next!=NULL){ r->next=q->next; free(q); } }}void destroyLinkList(LinkList *list){ LinkList p,q; p=*list; while(p){ q=p->next; free(p); p=q; } *list=NULL;} main(){ int e,i; LinkList l,q; q=l=GreatLinkList(1); /*建立一個連結串列結點,q和l指向該結點*/ scanf("%d",&e); while(e) /*迴圈地輸入資料,同時插入新生成的結點*/ { insertList(&l,q,e) ; q=q->next; scanf("%d",&e); } q=l; printf("The content of the linklist\n"); while(q) /*輸出連結串列中的內容*/ { printf("%d ",q->data); q=q->next; } q=l; printf("\nDelete the fifth element\n"); for(i=0;i<4;i++) /*將指標q指向連結串列第5個元素*/ { q=q->next; } delLink(&l,q); /*刪除q所指的結點*/ q=l; while(q) /*打印出刪除後的結果*/ { printf("%d ",q->data); q=q->next; } destroyLinkList(&l); /*釋放掉該連結串列*/ getche();}