单链表基本操作实验.doc: .
实验2链表的操作
实验内容:
1) 基础题:编写链表基本操作函数,链表带有头结点
(1) CreatUst_h()//用头插法建立链表
(2) CreateUst_t(>//用尾插法建立链表
(3) InsertList ()向链表的指定位置插入元素
(4) DeleteUst ()删除链表中指定元素值
(5) FindList ()查找链表中的元素
(6) OutputList ()输出链表中元素
2) 提高题:
(1) 将一个头节点指针为heada的单链表A分解成两个单链表A和B,其头结点指针分别为heada和headb,使得A表中含有原单链表A中序号为奇数的元素,B表中含有原链表 A中序号为偶数的元素,且保持原来的相对顺序。
(2) 将一个单链表就地逆置。
即原表(al, a2, 。。。。。。an),逆置后新表(an,an-1,ooooooo a 1)
程序功能:单链表基本功能操作编程者:杨天啸
円期 :2016-04-14
版本号 :
*/
include <>
//include <>
typedef struct List {
int data;
struct List *next;
}List;
void CreatList_h(List *L) //头插法{
int i = 0; int n = 0; int goal;
List *p;
printf(n请输入数据的个数人n">; scanf("%d",&n);
L -> next = NULL; for(i=0;i<n;i++)
printf("请输入第%(1 个数:\n",i+l}; scanf("%d'&goal);
p = (struct List*)malloc(sizeof(struct List)); p -> data = goal;
p -> next = L->next; //将L指向的地址赋值给p; L -> next = p;
}
}
void CreateList_t(List *L) //尾插法
{
int i; int n; int goal;
List *p;
List *q=L;
printf("请输入数据的个数:\«1"); scanf(,,o/od'\&n);
for (i=0;i<n;i++)
{
printf("请输入第%<1 个数:\n",i+l); scanf("%d",&goal);
p = (struct List*)malloc(sizeof(struct List)); p -> data = goal; q -> next = p;
q = p;
}
q -> next = NULL;
}
void lnsList(List *L,int i'int e) //插入
{
List *s;
List *p = L; int j = 0;
while (p&&j<i-l)
{
p = p->next;
++j;
}
s = (struct List
单链表基本操作实验 来自淘豆网m.daumloan.com转载请标明出处.