6-1 帶頭結點的單鏈表就地逆置 (10 分)
本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse_l(linklist &l)要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。
void listreverse_l(linklist &l);
其中l
是乙個帶頭結點的單鏈表。
//庫函式標頭檔案包含
#include#include#include//函式狀態碼定義
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype; //假設線性表中的元素均為整型
typedef struct lnode
lnode,*linklist;
status listcreate_l(linklist &l,int n)
return ok;
}void listreverse_l(linklist &l);
void listprint_l(linklist &l)
}int main()
listreverse_l(l);
listprint_l(l);
return 0;
}/* 請在這裡填寫答案 */
輸入格式:
第一行輸入乙個整數n,表示單鏈表中元素個數,接下來一行共n個整數,中間用空格隔開。
輸出格式:
輸出逆置後順序表的各個元素,兩個元素之間用空格隔開,最後乙個元素後面沒有空格。
4
1 2 3 4
4 3 2 1
void listreverse_l(linklist &l)
p1->next=l->next;//到最後乙個還沒有加上,在單獨加上
l->next=p1;
}
7-1 jmu-ds-單鏈表的基本運算 (15 分)
實現單鏈表的基本運算:初始化、插入、刪除、求表的長度、判空、釋放。
(1)初始化單鏈表l,輸出l->next的值;
(2)依次採用尾插法插入元素:輸入分兩行資料,第一行是尾插法需要插入的字元資料的個數,第二行是具體插入的字元資料。
(3)輸出單鏈表l;
(4)輸出單鏈表l的長度;
(5)判斷單鏈表l是否為空;
(6)輸出單鏈表l的第3個元素;
(7)輸出元素a的位置;
(8)在第4個元素位置上插入『x』元素;
(9)輸出單鏈表l;
(10)刪除l的第3個元素;
(11)輸出單鏈表l;
(12)釋放單鏈表l。
兩行資料,第一行是尾插法需要插入的字元資料的個數,第二行是具體插入的字元資料。
按照題目要求輸出
5a b c d e
0a b c d e5no
c1a b c x d e
a b x d e
7-2 兩個有序鍊錶序列的合併 (20 分)
已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2合併後的新的非降序鍊錶s3。
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
在一行中輸出合併後新的非降序鍊錶,數字間用空格分開,結尾不能有多餘空格;若新鍊錶為空,輸出null
。
1 3 5 -1
2 4 6 8 10 -1
1 2 3 4 5 6 8 10
//庫函式標頭檔案包含
#include#include#include//函式狀態碼定義
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype; //假設線性表中的元素均為整型
typedef struct lnode
lnode,*linklist;
status insert(linklist &l1,linklist &l2,linklist &l3);//進行鍊錶的插入操作
void print(linklist &l);
int main()
p=l2;
while(scanf("%d",&num)&&num>=0)
lnode *l3;
l3=(lnode *)malloc(sizeof(lnode));
l3->next=null;
insert(l1,l2,l3);
print(l3);//輸出l3
}status insert(linklist &l1,linklist &l2,linklist &l3)
else
}if(p1==null)
else
return ok;
}void print(linklist &l)
else
while(p)
printf("\n");
}
7-3 兩個有序鍊錶序列的交集 (20 分)
已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的交集新鍊錶s3。
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格;若新鍊錶為空,輸出null
。
1 2 5 -1
2 4 5 8 10 -1
//庫函式標頭檔案包含
#include#include#include//函式狀態碼定義
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype; //假設線性表中的元素均為整型
typedef struct lnode
lnode,*linklist;
status insert(linklist &l1,linklist &l2,linklist &l3);//進行鍊錶的插入操作
void print(linklist &l);
int main()
p=l2;
while(scanf("%d",&num)&&num>=0)
lnode *l3;
l3=(lnode *)malloc(sizeof(lnode));
l3->next=null;
insert(l1,l2,l3);
print(l3);//輸出l3
}status insert(linklist &l1,linklist &l2,linklist &l3)
else
}if(p1==null)
else
return ok;
}void print(linklist &l)
else
while(p)
printf("\n");
}
2 5
資料結構作業 單鏈表
資料結構第二次作業 單鏈表。include include 結構體的定義 typedef int elemtype typedef struct node linklist linklist head 用頭插法建立單鏈表 linklist create linklistf head next nul...
資料結構作業5 單鏈表(程式設計題)
實現單鏈表的基本運算 初始化 插入 刪除 求表的長度 判空 釋放。1 初始化單鏈表l,輸出l next的值 2 依次採用尾插法插入元素 輸入分兩行資料,第一行是尾插法需要插入的字元資料的個數,第二行是具體插入的字元資料。3 輸出單鏈表l 4 輸出單鏈表l的長度 5 判斷單鏈表l是否為空 6 輸出單鏈...
資料結構作業5 單鏈表(程式設計題)
已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的交集新鍊錶s3。輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用 1表示序列的結尾 1不屬於這個序列 數字用空格間隔。在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格 若新鍊錶為空,輸出null。1 2 ...