① 數據結構(C語言版)中的刪除鏈表中的一個節點
代碼如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct List
{
int a;
List* next;
}list;
void newList(list* l)//創建結點
{
list* a[4];
for (int i = 0; i < 4; i++)
{
a[i] = (list*)malloc(sizeof(list));
a[i]->a = i+1 ;
}
l->next = a[0];
a[0]->next = a[1];
a[1]->next = a[2];
a[2]->next = a[3];
a[3]->next = NULL;
}
void printfList(list* l)//列印結點的數據內容
{
printf("該鏈表的內容是: ");
while (l->next)
{
printf("%d ", l->next->a);
l = l->next;
}
printf(" ");
}
void setList(list* l,int x,int y)
{
list* head = l;
l = l->next;
while (l)
{
if (l->a >=y || l->a <=x)//將結點的數據區與指定區域進行比較
{
head->next = l;//將滿足條件的結點連接在新表的最後一個結點
//指針後移
l = l->next;
head = head->next;
}
else
{
//不滿足的結點進行刪除
list* l1 = l;
l = l->next;
free(l1);
}
}
head->next = NULL;
}
int main()
{
list* l = (list*)malloc(sizeof(List));
newList(l);//初始化鏈表
printfList(l);//輸出舊表內容
setList(l,1,3);//進行修改
printfList(l);//輸出修改後的鏈表
//system("pause");
return 0;
}
(1)數據結構編輯怎麼刪除擴展閱讀
鏈表的特點
1、插入、刪除數據效率高,時間復雜度為O(1)級別(只需更改指針指向即可),隨機訪鋒陪問效率低,時間復雜度O(n)級別(需要從鏈頭至鏈尾進行遍歷)。
2、和數組相比,內存空間消耗更大,因為每個存儲數據的節點都需要額外的空間存儲後繼指針。
常用的鏈表類型
1、單鏈表
1)每個節點只包含一個指針,即後繼指針。
2)單鏈表有兩個特殊的節點,即首節點和尾節點。用首節點地址表示整條鏈表,尾節點的後繼指針指向空地址null。
3)性能特點:插入和刪除節點的時間復雜度為O(1),查找的時間復雜度為O(n)。
2、循環鏈表
1)除了尾節點的後繼指針指向首節點的地址外均與單鏈表一致。
2)適用於存儲有循環特點的數據,比如約瑟雀簡夫問題。
3、頃基褲雙向鏈表
1)節點除了存儲數據外,還有兩個指針分別指向前一個節點地址(前驅指針prev)和下一個節點地址(後繼指針next)。
2)首節點的前驅指針prev和尾節點的後繼指針均指向空地址。
② 數據結構順序表的刪除
#include "stdio.h"
#define MAX 12
#define TURE 1
#define FALSE 0
#define Elemtype int
Elemtype list[MAX];
int num=-1;
typedef struct Sqlist{
Elemtype List[MAX];
int Length;
}LLLLL;
int Delete(Sqlist & L,int j)
{
int i;
if(j<0||j>L.Length)
{printf("error");
return FALSE;
}
for(i=j;i<L.Length;i++)
L.List[i-1]=L.List[i];
L.Length--;
return TURE;
}
void main(){
int a,b,s;
int length=10;
Sqlist c;
c.Length = 10;
printf("請啟謹輸入10個數悄枯基:\r\n");
for( a=0;a<length;a++)
scanf("%d",&c.List[a]);
printf("數組為:\r\n");
for( a=0;a<length;a++)
printf("%d\n",c.List[a]);
printf("輸入要刪除的位置:\r\n");scanf("敗猛%d",&b);
s=Delete(c,b);
printf("結果為:\r\n");
for(a=0;a<c.Length;a++)
printf("%d\r\n",c.List[a]);
system("Pause");
③ 數據結構隊列出隊代碼怎麼刪除
隊列出隊代碼刪除商品的方法如下皮鍵嫌:
1. 使用循環遍歷隊列,找到要刪除的商亮兆品;
2. 將要刪除的商品從隊列中移除;
3. 將隊列中的其他商品向前移動,以填補燃手刪除商品留下的空缺;
4. 將隊列的最後一個元素置為null;
5. 最後,將隊列的長度減1.
④ 數據結構刪除所有的相同的字元串
改唯搏DelString就好了:
void DelString(LINE * &head,char *str)
{
LINE *p=head;
do
{
while(strstr(p->data,str)!=NULL)delstringword(p->data,str);
}
while((p=p->next)!=NULL); //指弊遍歷 鏈表指逗祥
}
⑤ 在數據結構有序的順序表中,怎樣刪除重復的數據
Linklist deleteDup(Linklist Header){
if(Header == NULL || Header->next == NULL) return Header;
Node* tmp = Header->next;
while(tmp != NULL && tmp->next != NULL){
if(tmp->next->data == tmp->data) tmp->next = tmp->next->next;
else tmp = tmp->next;
}
return Header;
}
⑥ 數據結構單鏈表刪除某一節點操作
題目說的枯鉛就消敗絕是刪除p的後繼結點.不要把p看作一個孤立的指針,事實上,p是前一個結點指針域.
q = p->next; // q記錄欲刪除的結點
p = p->next->next; // 跨過欲刪除的結點,也拿姿可寫作 p->next = q->next
free(q); // 釋放該結點佔用的空間