注意:此文只适用于初学者,浅显的代码,实际上顺序表和链表还有更加高效有用的处理方式
顺序表:
#include <stdio.h>
#include <stdlib.h>
/**
*ArrList顺序表
*/
typedef struct ArrList{
int *elem;
int length;
int listSize;
}arrList;
bool Entry(arrList &p){
p.elem=(int )malloc(10sizeof(int));
p.length=0;
p.listSize=10;
for(int i=0;i<10;i++){
p.elem[i]=i;
p.length++;
}
return true;
}
void Insert(arrList &p,int InsertData,int Location){
if(p.listSize==p.length){
p.elem=(int *)realloc(p.elem,(p.listSize+10)*sizeof(int));
p.listSize=p.listSize+10;
printf(“Realloc is successful!\n”);
}
for(int i=p.length;i>=Location;i–){
p.elem[i]=p.elem[i-1];
}
p.length++;
p.elem[Location-1]=InsertData;
}
void Print(arrList &p){
for(int i=0;i<p.length;i++)
printf("%d,",p.elem[i]);
}
int main(){
arrList arrlist;
Entry(arrlist);
Print(arrlist);
printf("\n===================\n");
Insert(arrlist,666,6);
Print(arrlist);
return 0;
}
链表:
#include <stdio.h>
#include <stdlib.h>
/**
*Linklist链表
*/
typedef struct Linknode{
int data;
struct Linknode *next;
}linklist;
//初始化链表
linklist *initlink(){
linklist *head=(linklist *)malloc(sizeof(linklist)); //创建头节点
linklist *p=head; //指向头节点的指针
//生成链表
int i;
for(i=0;i<10;i++){
linklist *a=(linklist *)malloc(sizeof(linklist)); //创建新节点
a->data=i;
a->next=NULL;
p->next=a;
p=p->next;
}
return head;
}
void PrintL(linklist *p){
linklist *t=p;
while(t->next){
t=t->next;
printf("%d, “,t->data);
}
printf(”\n");
}
int main(){
//CreateList()
linklist *p=initlink();
PrintL§;
}