C語言 嚴蔚敏數據結構 線性表之鏈表實現

  博主最近在考成都大學皇家計算機科學與技術專業,複習專業課數據結構,正好學習到線性結構中的線性表用鏈表這種存儲結構來實現。node

  首先,數據結構包括一、數據的操做二、邏輯結構三、存儲結構(數據結構三要素。數據結構

  直接上代碼,現階段代碼實現功能有:鏈表初始化、遍歷、增、刪、返回鏈表長度,後續功能陸續發佈。其中確定有不少問題,但願各位碼哥留言。學習

Linklist* InitList(int i)//i爲鏈表大小
{ Linklist *head; head = (Linklist*)malloc(sizeof(Linklist)); Linklist *end=head; int j = 0; for (j = 0;j < i;j++) { Linklist *node = (Linklist*)malloc(sizeof(Linklist)); scanf("%d", &node->data); end->next = node; end = node; } end->next = NULL; return head; }
int GetLenLinklist(Linklist *head)//獲取帶頭結點鏈表長度
{ int length; Linklist *p; p = head; for (length = 0;p->next != NULL;length++) { p = p->next; } return length; }
void LinklistMap(Linklist *head,int length)//遍歷整個鏈表
{ Linklist *p; p = head->next; int i; for (int i=0;i<length;i++) { printf("第%d個值爲%d", i+1 , p->data); p = p->next; } }
void InsertLinkList(Linklist *head,int i,int data)//在第i個結點後插入 一個結點
{ Linklist *p = head; int j = 0; while (p->next!=NULL&&j < i - 1) { p = p->next; ++j; } if (!p || j > i - 1) printf("當前鏈表爲空"); else { Linklist *node = (Linklist*)malloc(sizeof(Linklist)); node->data = data; node->next = p->next; p->next = node; } }
void DelLinklist(Linklist *head, int data)//刪除結點值=data的結點。
{ Linklist *p, *q; q = head; p = head->next; while (p->next != NULL && p->data != data) { p = p->next; q = q->next; } if (p->data!=data&&p->next == NULL) printf("鏈表中無此節點"); else { q->next = p->next; free(p); } }//還未實現多個結點==某個值

後續即將更新,再插入和刪除操做中,記住趙海英老師上課的話,先鏈接,後刪除!spa

本博客惟一解釋權:成都大學信息科學與工程學院學習委員雷雷提code

相關文章
相關標籤/搜索