线性表链式存储
单链表
优点
1.插入和删除元素不需要移动元素,只需要修改指针
2.不需要大量存储空间
缺点
1.单链表附加指针域,也会造成浪费
2.查找操作时需要从表头开始遍历,不能随机存取。
增、删、改、查
typedef struct lineList{
Elemtype data;
struct LNode *next;
}LNode,*LinkList;
q=(LNode*)malloc(sizeof(LNode))
q->data=x;
q->next =p->next;
p->next=q;
p->next=q;
q->next=Null;
q=p->next;
p->next=q->next;
free(q);
LNode *p=L->next;
int j=1;
while(p&&j<i){
p=p->next;
j++;
}
return p;
LNode *p =L->next;
while(p!=NULL&&p->data=e){
p=p->next;
}
return p;nc
顺序表OJ作业
#include<stdio.h>
#include<string.h>
#define Maxsize 50
typedef int Elemtype;
typedef struct {
Elemtype data[Maxsize];
int length;
}SqList;
bool Add(SqList &L,int i,int n){
for(int j = L.length;j>=i;j--){
L.data[j]=L.data[j-1];
}
L.data[1]=n;
L.length++;
return true;
}
bool del(SqList &L,int a){
if(a<1||a>L.length){
printf("False\n");
}
for(int i=a;i<L.length;i++){
L.data[i-1]=L.data[i];
}
L.length--;
return true;
}
void PrintALL(SqList L){
int i;
for(i=0;i<L.length;i++){
printf("%3d",L.data[i]);
}
printf("\n");
}
int main(){
int n,t;
SqList L;
bool ret1,ret2;
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.length=3;
PrintALL(L);
scanf("%d",&n);
ret1=Add(L,2,n);
PrintALL(L);
scanf("%d",&t);
ret2=del(L,t);
PrintALL(L);
return 0;
}
易错点:
1.在子函数中修改中 ,形参要加&符号。
2.不要忘记对不合法情况进行分析