代码段基本上都是出自于教材:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
//构造一个空的线性表
Status InitList_Sq(SqList &L){
L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L.elem){
printf("存储空间分配失败\n");
exit(OVERFLOW);
}
L.length = 0;
L.listsize = LIST_INIT_SIZE;
printf("一个空的线性表已经构建成功\n");
return OK;
}
//对线性表进行赋值
Status ValueList_Sq(SqList &L){
int i,j;
printf("请输入线性表元素的个数:");
scanf("%d",&i);
if(i > L.listsize)
{
while(1)
{
if(i > L.listsize){
L.elem = (ElemType *)realloc(L.elem,LISTINCREMENT * sizeof(ElemType));
L.listsize += LISTINCREMENT;
}
else
break;
}
}
for(j = 0;j < i;j++){
printf("请输入第%d个元素:",j + 1);
scanf("%d",&L.elem[j]);
}
L.length = i;
return OK;
}
Status PrintList_Sq(SqList L){
printf("当前线性表的元素为:");
for(int K = 0;K < L.length;K++)
printf(" %d",L.elem[K]);
printf("\n");
return OK;
}
int main()
{
SqList L;
InitList_Sq(L);
ValueList_Sq(L);
PrintList_Sq(L);
}
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
//----- 线性表的单链表存储结构-----
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList; //这里给结构体起个别名
typedef int Status;
Status ListInsert_L(LinkList &L,int i,int e){ //在带头结点的单链线性表L中第i个位置之前插入元素e。
LinkList p;
LinkList s;
p=L; //L的地址传送给了p。
int j = 0;
while(p&&j<i-1){ //寻找第i-1个结点。
p=p->next;
j++;
}
if(!p||j>i-1) return 0; //i小于1或者大于表长加1。
s=(LinkList)malloc(sizeof(LNode));//生成新结点。
s->data=e; //插入L中。
s->next=p->next;
p->next=s;
return 1;
}
int main() {
LinkList A;
A=(LinkList)malloc(sizeof(LNode)); //A链表初始化申请空间建立新的结点。
//A->next=NULL;
//A->data=0;
//cout<<A->data;
for(int i=1;i<=9;i+=2){//插入1,3,5,7,9.并按递增输出。
ListInsert_L(A,1,i);
A=A->next;
cout<<A->data<<" ";
}
return 0;
}