#include
#include
typedef struct node_tag node;
// 建立不帶頭結點的單鏈表
node *createnode()
else
p = q;
scanf("%d", &n);
}// 函式體結束,q指標變數被釋放,不能通過head引數帶回到呼叫函式
// 要把head帶回到呼叫函式,要把它定義為指向指標的指標。
return phead;
}// 求鍊錶長度
int length(node *head)
return n;
}// 輸出結果
void output(node *head)
printf("/n");
printf("length: %d/n", length(head));
}// 單鏈表的逆置
node *reverse(node *head)
head->next = null;
head = p;
return head;
}// 有序單鏈表的合併
node *mergelist(node *head1, node *head2)
p1 = p1->next;
}while (p2->next)
p2 = p2->next;
}if (flag1 != flag2)
//******************************//
node *head = null;
node *p = null;
p1 = head1;
p2 = head2;
// 從小到大排序
if (flag1)
else
p = head;
while (p1 != null && p2 != null)
else }}
// 從大到小排序
else
else
p = head;
while (p1 != null && p2 != null)
else }}
p->next = p1? p1 : p2;
return head;
}// 有序單鏈表的交集
node *insectlist(node *head1, node *head2)
p1 = p1->next;
}while (p2->next)
p2 = p2->next;
}if (flag1 != flag2)
//******************************//
node *head = null;
node *p = null;
p1 = head1;
p2 = head2;
// 從小到大排序
if (flag1)
else if(p1->data > p2->data)
else
else
p1 = p1->next;
p2 = p2->next;
while(p1 && p1->data == p->data)
p1 = p1->next;
while(p2 && p2->data == p->data)
p2 = p2->next;}}
}// 從大到小排序
else
else if(p1->data < p2->data)
else
else
p1 = p1->next;
p2 = p2->next;
while(p1 && p1->data == p->data)
p1 = p1->next;
while(p2 && p2->data == p->data)
p2 = p2->next;}}
}p->next = null;
return head;
}// 移出表頭結點
// 因為函式引數是值傳遞,因此如果不用引用函式內部對指標指向的修改並不影響外部指標
node *removehead(node *head)
void main()
單鏈表操作
include stdio.h include malloc.h include define n 10 代表要處理的元素個數 可以誰使用者的意思修改 define ok 1 define overflow 0 typedef int elemtype typedef int status type...
單鏈表操作
這一次補上鍊表的注釋,是空閒的時候敲出來的,如果有錯,希望幫忙糾正 部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了 如果有什麼不懂的地方,可以隨時詢問 include using namespace std typedef int elemtype struct ...
單鏈表操作
資料結構上機測試 2 1 單鏈表操作 atimelimit 1000ms memory limit 4096k 題目描述輸入n 個整數,先按照資料輸入的順序建立乙個帶頭結點的單鏈表,再輸入乙個資料 m,將單鏈表中的值為 m的結點全部刪除。分別輸出建立的初始單鏈表和完成刪除後的單鏈表。輸入第一行輸入資...