/*單鏈表的練習(xí)-頭插法*/ /*單鏈表由頭結(jié)點(diǎn)就可以唯一確定*/ #include?#include? #include? //定義單鏈表結(jié)構(gòu) typedef?struct?Node{ int?data;??//數(shù)據(jù)域 Node?*?pNext;??//指針域 }NODE,*?PNODE; PNODE?create_list(void);??//創(chuàng)建鏈表 void?show_list(PNODE?pHead);??//顯示鏈表 void?insert(PNODE?pHead,int?pos,int?inval);?//向鏈表中某個(gè)位置插入元素 int?deleteList(PNODE?pHead,int?pos);?//刪除鏈表某個(gè)位置上的值 void?find(PNODE?pHead,int?fval);??//在鏈表中查找某個(gè)元素 void?main(){ PNODE?pHead?=?NULL;??//定義一個(gè)頭結(jié)點(diǎn),初始值為空 pHead?=?create_list(); show_list(pHead); insert(pHead,2,100); show_list(pHead); find(pHead,3); printf("你所刪除的值是%d\n",deleteList(pHead,2)); show_list(pHead); } PNODE?create_list(void){ int?length,val; PNODE?pHead?=?(PNODE)malloc(sizeof(NODE));??//向內(nèi)存申請頭節(jié)點(diǎn)空間 pHead->pNext=NULL;???//開始的時(shí)候只有頭結(jié)點(diǎn)自身,沒有其它結(jié)點(diǎn) if(NULL?==?pHead){ printf("分配失敗,程序終止"); exit(-1); } printf("請輸入需要生成的單鏈表的長度:"); scanf("%d",&length); for(int?i=0;i data=val;???//給新申請的結(jié)點(diǎn)數(shù)據(jù)域賦值 pNew->pNext=pHead->pNext;??//頭指針指向的下一個(gè)結(jié)點(diǎn)的地址賦給了新結(jié)點(diǎn)的指針域,也就是在當(dāng)前頭結(jié)點(diǎn)后面直接插入一個(gè)新結(jié)點(diǎn) pHead->pNext=pNew;?//頭結(jié)點(diǎn)指向了新的結(jié)點(diǎn) } return?pHead;???//函數(shù)返回頭結(jié)點(diǎn)的地址 } void?show_list(PNODE?pHead){ printf("單鏈表的值如下:\n"); PNODE?P?=?pHead->pNext; while(P?!=?NULL){??????//while巡檢打印出所以結(jié)點(diǎn),直到下個(gè)結(jié)點(diǎn)不存在 printf("%d?",P->data); P=P->pNext; } printf("\n"); } void?insert(PNODE?pHead,int?pos,int?inval){ PNODE?P?=?pHead; int?j=0; while(P?!=?NULL?&&?j pNext; j++; } if(P?==?NULL){ printf("插入失敗\n"); exit(-1); }else{ PNODE?pNew?=?(PNODE)malloc(sizeof(NODE));??//申請新的結(jié)點(diǎn) pNew->data=inval;???//將要插入的值賦值給新結(jié)點(diǎn)的數(shù)據(jù)域 pNew->pNext=P->pNext;??//新結(jié)點(diǎn)指向P指針指向的下一個(gè)結(jié)點(diǎn) P->pNext=pNew;?//P指針?biāo)诘慕Y(jié)點(diǎn)指向新結(jié)點(diǎn) printf("你已經(jīng)成功的插入了元素%d到鏈表中.\n",inval); } } int?deleteList(PNODE?pHead,int?pos){ PNODE?P?=?pHead,S; int?j=0,x; if(P?!=?NULL?&&?j pNext; j++; } if(P?==?NULL){ printf("刪除失敗,數(shù)組是空的"); exit(-1); }else{ S?=?P->pNext; P->pNext?=?S->pNext; x?=?S->data; free(S); return?x; } } void?find(PNODE?pHead,int?fval){ PNODE?P?=?pHead; int?cnt=0; if(P?==?NULL){ printf("不用找了,鏈表是空的\n"); exit(-1); } while(P?!=?NULL){ P?=?P->pNext; ++cnt; if(P->data==fval){ printf("你要找的數(shù)%d在鏈表中,它在鏈表的第%d個(gè)位置\n",fval,cnt); break; } } }
結(jié)果截圖
創(chuàng)新互聯(lián)公司是專業(yè)的吳起網(wǎng)站建設(shè)公司,吳起接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行吳起網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!