2019.04.08打卡
阿新 • • 發佈:2019-04-09
clu stdlib.h first 存儲分配 list null include oid span
1 #include <stdio.h> 2 #include <stdlib.h>
3 typedef int DataType; 4 typedef struct node{ 5 DataType data; 6 struct node *next; 7 }LinkNode,*LinkList; //LinkNode是JAVA中鏈表結點,此類可以存放int、long、float、double、byte、short、String、StringBuffer類型的數據 8 //定義單鏈表 9 void initList(LinkList &first){ 10 first=(LinkNode*)malloc(sizeof(LinkNode)) //創建頭結點 11 if(!first){ 12 printf("存儲分配錯誤!\n"); 13 exit(1); // (exit(1)表示異常退出. exit(0)表示正常退出) 14 } 15 first->next=NULL; //置空 16 }17 //初始化單鏈表 18 int Length(LinkList &first){ 19 LinkNode *p=first->next; 20 int count=0; 21 while(p!=NULL){ 22 p=p->next; 23 count++; 24 } 25 return count; 26 } 27 //計算表的長度,返回count 28 LinkNode *Search(LinkList &first,DataType x){29 LinkNode *p=first->next; 30 if(p!=NULL&&x!=p->data){ 31 p=p->next; 32 return p; 33 } 34 return NULL; 35 } 36 //按值查找,返回該結點地址,否則返回NULL 37 LinkList *Locate(LinkList &first,int i){ 38 if(i<0) 39 return NULL; 40 LinkNode *p=first; 41 int k=0; //k用作結點計步 42 while(p!=NULL&&k<i){ 43 p=p->next; 44 k++; 45 } 46 return p; 47 } 48 //查找第i個結點,返回該結點的地址,否則返回NULL 49 int Insert(LinkList &first,int i,DataType x){ 50 LinkNode *p=Locate(first,i-1); //定位在第i-1個結點 51 if(p==NULL) 52 return 0; 53 LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode)); 54 if(s==NULL){ 55 printf("存儲分配錯誤!\n"); 56 exit(1); 57 } 58 } 59 //將新元素插入在第i個位置,如i不合理返回NULL,否則返回1 表示插入成功 60 61 62
今日小結:今天學習了單鏈表的定義、初始化以及計算表的長度、按值查找和插入 在課上並不是很清晰 課後自己敲了代碼 又去查了一下不太清晰的點之後 理解了很多 時間關系 明天再探究刪除和賦值 應該跟順序表相似
2019.04.08打卡