以下程序不完整
定义结构体
typedef int status;
typedef int ElemType;
typedef struct Student{
char name[20];
int num;
int tel;
}ElemType;
单链表的初始化(带头结点)
//单链表初始化
status InitList(LinkList &L){
L = new LNode;
L->next = NULL;
return OK;
}
头插法建立单链表 //时间复杂度O(n)
//创建链表,头插法
status CreateList_H(LinkList &L,int n){ //时间复杂度O(n)
L = new LNode;
L->next = NULL;
LNode* p;
for(int i=n;i>0;i--){
p = new LNode;
scanf("%s%d%d",&p-data.name,&p->data.num,&p->data.tel)//cin>>p->data;
p->next = L->next;
L->next =p;
}
return OK;
}
尾插法建立单链表 //时间复杂度O(n)
//创建链表,尾插法
status CreateList_R(LinkList &L,int n){ //时间复杂度O(n)
L = new LNode;
L->next = NULL;
LNode *p,*r;
r = L;
for(int i=0;i<n;i++){
p = new LNode;
scanf("%s%d%d",&p-data.name,&p->data.num,&p->data.tel)//cin>>p->data;
p->next = NULL;
r->next = p;
r = p;
}
return OK;
}
#include<stdio.h>
#define OK 1
#define ERROR 0
typedef int status;
typedef int ElemType;
typedef struct Student{
char name[20];
int num;
int tel;
}ElemType;
typedef struct LNode{
ElemType data;
struct LNode* next;
}LNode,*LinkList;
//单链表初始化
status InitList(LinkList &L){
L = new LNode;
L->next = NULL;
return OK;
}
//创建链表,头插法
status CreateList_H(LinkList &L,int n){ //时间复杂度O(n)
L = new LNode;
L->next = NULL;
LNode* p;
for(int i=n;i>0;i--){
p = new LNode;
scanf("%s%d%d",&p-data.name,&p->data.num,&p->data.tel)//cin>>p->data;
p->next = L->next;
L->next =p;
}
return OK;
}
//创建链表,尾插法
status CreateList_R(LinkList &L,int n){ //时间复杂度O(n)
L = new LNode;
L->next = NULL;
LNode *p,*r;
r = L;
for(int i=0;i<n;i++){
p = new LNode;
scanf("%s%d%d",&p-data.name,&p->data.num,&p->data.tel)//cin>>p->data;
p->next = NULL;
r->next = p;
r = p;
}
return OK;
}
//销毁链表
status DestroyList(LinkList &L){
LNode* p
while(L){
p = L;
L = L->next;
delete p;//删除(或者释放)p所指的结点
}
return OK;
}
//清空链表
status ClearList(LinkList &L){
LNode *p,*q;
p = L->next;
while(p){
q = p->next;
delete p;
p=q;
}
L->next = NULL;
return OK;
}
//链表长度
status ListLength(LinkList &L){
int i = 0;
LNode* p;
p = L->next;
while(p){
i++;
p = p->next;
}
return i;
}
//链表取出第i个值(顺序存储)
status GetElem(LinkList &L,int i,ElemType &e){
LNode* p;
p = L->next;
int j = 1;
while(p&&j<i){
p = p->next;
j++;
}
if(!p||j>i) return ERROR;//如果L为空表 或者 i>len(L),则p=NULL
e = p->data;//如果i<=0,e为首元结点的值;
return OK;
}