#include <stdio.h>#include <stdlib.h>typedef struct Node{int data; //資料域Node *next; //指標域,指向下一個Node節點}Node;Node *create(); //建立一個單鏈表int deleteFromList(Node *linkList, int i); //刪除節點 成功返回0 否則-1int insertIntoList(Node *linkList, int i, int value);//插入節點 成功返回0 否則-1void display(Node *linkList);//遍曆並列印鏈表void main(){Node *LinkList = create();//display(LinkList);insertIntoList(LinkList, 5, 30);display(LinkList);deleteFromList(LinkList, 5);display(LinkList);}Node *create(){int n = 20;Node *pList, *pNew, *pTail; pList = (Node *)malloc(sizeof(Node));pList->next = NULL;pTail = pList;//for(int i = 1; i <= n; i++){pNew = (Node *)malloc(sizeof(Node));if(pNew == NULL){printf("error!!");exit(0);}pNew->data = i;pNew->next = NULL;pTail->next = pNew;pTail = pNew;}pTail->next = NULL;return pList;}int insertIntoList(Node *linkList, int i, int value){//先尋找是否有這個節點Node *p, *q;int j = 1; //計數p = linkList;while(p && j < i) //尋找第i個節點{p = p->next;++j;}if(!p || j > i){return -1;//第i個節點不存在,插入失敗}//現在p是在第4個位置,p->next指向的是第五個值q = (Node *)malloc(sizeof(Node));q->data = value;q->next = p->next;//把第五個值及以後的鏈表下掛到q->next指標上p->next = q;//把q及上面下掛在q->next上的連結 下掛到p->next上return 0;}int deleteFromList(Node *linkList, int i){//檢測是否存在第i個節點Node *Ptr;int j = 1;Ptr = linkList;while(Ptr->next && j < i){Ptr = Ptr->next;++j;}if(!(Ptr->next) || j > i){return -1;//不存在第i個節點}Ptr->next = Ptr->next->next;return 0;}void display(Node *linkList){while(linkList->next){printf("%d\n", linkList->next->data);linkList = linkList->next;}}