鍊錶建立及其相關功能

2021-08-20 22:28:43 字數 1895 閱讀 9910

1.

編寫函式,完成在第

n個節點的後增加節點的功能,

n值由鍵盤輸入。(注意健壯性,要求能夠對不同的

n值做出恰當的處理)。

2.編寫函式,完成在第

n個節點的後刪除節點的功能,

n值由鍵盤輸入。(注意健壯性,要求能夠對不同的

n值做出恰當的處理)。

3.編寫函式,刪除所有資料值為奇數的節點。(注意健壯性,奇數節點可以在任意位置,頭、尾、中間,刪除了之後可能刪光了)。

4.要求每次增刪節點後可以顯示更新後的鍊錶元素個數及每個節點的資訊。

#include #include #include #define l sizeof(struct link)

int len;

struct link

;void display(struct link *head); //輸出鍊錶所有資訊

struct link *insertnode(struct link *head); //插入節點

struct link *deletenode(struct link *head); //刪除節點

struct link *deleteodd(struct link *head); //刪除data為奇數的節點

void display(struct link* head)

}int main()

if(head==null)

break;

}return 0;

} if(head==null)

else

printf("input data\n");

scanf("%d",&data);

p->data=data;

if(i==len)

}return head;

};struct link *insertnode(struct link *head) //完成在第n個節點的後增加節點的功能,n值由鍵盤輸入

p=(struct link *)malloc(l); //為要插入的節點申請空間

if(p==null)

for(i=1; inext;

}if(nnext=pr->next;

pr->next=p;

}printf("input data!\n");

scanf("%d",&data);

p->data=data;

len++;

return head;

};struct link *deletenode(struct link *head) //完成刪除第n個節點的功能,n值由鍵盤輸入

if(len==1&&n==1) //如果鍊錶只有乙個節點

if(n==1)

for(i=1; inext;

}for(i=1; inext;

}free(p);

len--;

return head;

};struct link *deleteodd(struct link *head) //刪除data為奇數的節點

else

k++;

}else

if(j>2)

pr=pr->next;

}len-=k;

temp=head,text=head; //處理第n個節點

for(i=1; inext;

if(temp->data%2==1)

else

}return head;

};

時刻把握好pr 、p 和

head 的位置,這類問題就能輕鬆解決。

C 鍊錶及其建立

鍊錶是由一系列連線在一起的結點構成,其中的每個結點都是乙個資料結構。鍊錶的結點通常是動態分配 使用和刪除的,允許鍊錶在程式執行時增大或縮小。如果需要將新資訊新增到鍊錶中,則程式只需分配另乙個結點並將其插入到系列中。如果需要從鍊錶中刪除特定的資訊塊,則程式將刪除包含該資訊的結點。儘管鍊錶的編碼和管理比...

c 鍊錶及其相關操作

僅供自己學習參考 鍊錶,線性表的鏈式儲存結構。前提 typedef struct lnode lnode,linklist 單鏈表的建立及其相關操作 void creatlist linklist l,int n 頭插法 建立鍊錶6 5 4 3 2 1,有頭結點 void creatlist2 li...

雙向鍊錶及其相關操作

雙向迴圈鍊錶 每乙個結點都有兩個指標,乙個前驅乙個後繼,頭結點的前驅指向最後乙個結點,最後乙個結點的後繼指向頭結點 結構體定義 typedef int type 結點定義 typedef struct nodenode 鍊錶定義 typedef struct listlist 建立乙個結點 node...