1樓:網友
*路過說說,望多琢磨,如有不對之處,歡迎來個訊息共同**!*/
#include ""
#include ""
#define max 10
typedef struct sqlist{
char elem[max];
int len;
sqlist;
sqlist *creat(int n);
int insert_sq(int i,char x,sqlist *l);
int main(){
char x;
int n = 10; /假設開始建立的連結串列長為10*/
sqlist *l = null;
l = creat(n);
x = a'; x沒有初始化*/
insert_sq(3,x,l);
這裡你應該釋放剛才動態申請的記憶體,也就是銷燬連結串列,否則造成記憶體洩露 */
return 0; /你沒有讓main返回值*/
sqlist *creat(int n)/*按你的邏輯,應該返回或扒連結串列頭*/
sqlist *l = null; /建衫隱昌議習慣上,定義指標後,應該賦值為null,避免隱蔽錯誤*/
int i;
l = sqlist*)malloc(sizeof(sqlist));沒有給連結串列申請空間*/
l->len=n; /申請空間後,可進行後面的操作了。
for(i=0;i攜慶len;i++)
scanf("%c",&l->elem[i]);
return l; /返回連結串列頭指標,否則會丟失連結串列,記憶體洩露*/
int insert_sq(int i, char x,sqlist *l){
sqlist *l; 無用了,應該由函式引數傳近來,插入是在已建立的連結串列裡進行*/
int j;
if(i<1||i>l->len+1) return 0;
if(l->len==max-1) return -1;
for(j=l->len;j>=i;j--)
l->elem[j+1]=l->elem[j];
l->elem[i]=x;
l->len;
return 1;
2樓:網友
我不想看程式,可是你的習慣不好,c++最好不要定義巨集,容易出錯。你看看是不是。
線性表錯誤答案是?
3樓:流年淡忘憂傷
是d連結串列通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一起的。
每個結點只有乙個鏈域的連結串列稱為單連結串列。
4樓:網友
c.順序表需要連續的記憶體空間,而連結串列的空間是隨機分配的,它可以把不連續的空間聯絡起來使用,所以順序表的空間利用率不高於連結串列。
5樓:衷飛
c.順序儲存的缺點:儲存空間是預分配的,不靈活,空間浪費。
6樓:網友
這個題目出的有問題,應該都對。
對於長度為n的線性表,在最壞情況下,下列各排序法所對應的比較
選擇d。快速排序是拿比較向鄰1個單元的大小,並按一定方向排列,大小方向不符合的就把2個單元交換,依次比較下去。例如 12,23,34,45,56,67,這樣就確定了乙個最大 最小 的單元,並把它排列一端,交換次數為n 1,然後在除了最值外的n 1個單位中繼續排列,出來第2個最大 最小 值,次數為n ...
c語言線性表的實現中的頭插法和尾插法
頭插法建表 演算法 p listnode malloc sizeof listnode 生成新結點 p data ch 將讀入的資料放入新結點的專資料域中p next head head p 尾插法建表屬 演算法 p listnode malloc sizeof listnode 生成新結點 p d...
設有一元素為整數的線性表La1,a2,a3an
上面是核心 和乙個隨手寫的簡單測試,注意看數字15,左邊都比15小,右邊都比15大。你的這個題目其實就是快速排序演算法的一部分,有興趣可以去看看快排的原理,我這個函式就是從之前寫的快排拿出來小改了一下的。下面是完整的測試函式,隨手寫的,可能不太優雅 include using namespace s...