数据结构之线性表(二)

来源:互联网 发布:java好学吗 编辑:程序博客网 时间:2024/05/21 10:58

线性表的链式存储结构之单链表

1.头文件NodeList.h

typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}ListNode,*LinkList;//单链表的创建void CreateListHead(LinkList &L,int n);//单链表的删除int ListDelete(LinkList &L,int n);//单链表的插入int ListInsert(LinkList &L,int n,ElemType e);//单链表的读取int ListGetElem(LinkList L,int n);//单链表的销毁int ClearList(LinkList &L);//打印单链表void ListPrint(LinkList L,int n);

2.函数实现NodeList.cpp

#include <iostream>#include <time.h>#include <malloc.h>#include "NodeList.h"void CreateListHead(LinkList &L,int n){LinkList p,temp;int i;//srand(time(0));//初始化随机种子L=(LinkList)malloc(sizeof(ListNode));//先声明一个带头结点的单链表L->next=NULL;temp=L;for(i=0;i<n;i++){p=(LinkList)malloc(sizeof(ListNode));//p->data=rand()%100+1;//生成100以内的数字p->data=i+1;p->next=NULL;temp->next=p;temp=p;}}int ListDelete(LinkList &L,int n){int i=1;ElemType data;LinkList q,p;q=L;while(q->next && i<n){q=q->next;i++;}if(q->next==NULL)return -1;p=q->next;q->next=p->next;data=p->data;free(p);return data;}int ListInsert(LinkList &L,int n,ElemType e){int i=1;LinkList q,p;q=L;while(q->next && i<n){q=q->next;i++;}if(q->next==NULL && i<n)return 0;else{p=(LinkList)malloc(sizeof(ListNode));p->data=e;p->next=q->next;q->next=p;return 1;}}int ListGetElem(LinkList L,int n){int i=1;LinkList p;p=L;while(p->next && i<n){p=p->next;i++;}if(p->next==NULL)return 0;elsereturn p->next->data; }int ClearList(LinkList &L){LinkList q,p;q=L->next;while(q){p=q->next;free(q);q=p;}L->next=NULL;return 1;}void ListPrint(LinkList L,int n){for(int i=0;i<n;i++){L=L->next;printf("%d\n",L->data);}printf("---------分割线-------------\n");}

3.主函数main.cpp

#include <iostream>#include "NodeList.h"int main(){int n=10,a,temp;LinkList L;//生成单链表CreateListHead(L,n);//打印单链表ListPrint(L,n);//删除指定结点a=ListDelete(L,9);//a为被删除结点值temp=(a==-1)?n:n-1;printf("%d\n",a);//打印单链表ListPrint(L,temp);//插入结点a=ListInsert(L,10,20);printf("%d\n",a);temp=(a==0)?temp:temp+1;//打印单链表ListPrint(L,temp);//获取链表指定元素a=ListGetElem(L,9);printf("%d\n",a);//清空链表a=ClearList(L);printf("%d\n",a);return 0;}


0 0
原创粉丝点击