数据结构线性表是数据结构最基础的一章内容,也是数据结构最基础的一段,包括线性表的定义,线性表的初始化,线性表的插入,删除,合并。下面贴上代码
#include <stdio.h>
#include <malloc.h>
#include<iostream>
using namespace std;
//线性表的定义
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//线性表的初始化
int InitList_L(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
//线性表的插入
int ListInsert_L(LinkList &L,int i,ElemType e)
{
LinkList p;
p = L;
int j = 0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return 0;
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next=p->next;
p->next=s;
return 1;
}
//清空线性表
void Delete_L(LinkList L)
{
LinkList p = L->next;
if(!p)
cout << "this list is empty!";
while(p)
{
cout << p->data;
p = p->next;
}
cout << endl;
}
//合并线性表
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
LinkList pa = La->next;
LinkList pb = Lb->next;
LinkList pc = Lc=La;
while (pa&&pb)
{
if(pa->data<pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(Lb);
}
int main()
{
LinkList La,Lb,Lc;
InitList_L(La);
InitList_L(Lb);
InitList_L(Lc);
ListInsert_L(La,1,2);
ListInsert_L(La,2,3);
ListInsert_L(La,3,5);
Delete_L(La);
}