欢迎来到天天文库
浏览记录
ID:21757468
大小:235.76 KB
页数:21页
时间:2018-10-24
《《数据结构》上机实验参考程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一单链表的建立、删除和插入参考程序#include#include#defineN5typcdcfstructLNodc{intdata;structLNodenext;JLNode,LinkList;LNodeCreateList(intn)/算法2.11,见课本p30/{/逆位序(插迕表失)输入n个元素的值,建立带表义•结构的单链线性表L/inti;LinkListp,L;L=(LinkList)malloc($izeof(structLNodc));L->next=NULL;/先建立一个带炙结点的单链表/printf(
2、"请输入%(1个数据",n);for(i=n;i〉0;--i){p=(LinkList)malloc(sizeof(structLNode));/生成新结点/scanf("%d’’,&p-〉data);/输入元素值/p->next=L->next;/插入到表头/L-〉next=p;)returnL;}Lnodeinsert(LinkListL,inti,inte)/算法2.9,见课木p29/{/在带头结点的单链线性表L中第i个位H之前插入元素e/LinkListp=L,s;intj=O;while(p&&jnext;++j;}if(!pll
3、j>i-l)returnL;/假如i小于1成者人于表长,则不插入结点,返回原链表/s=(LinkList)malloc(sizeof(structLNode));s->data=c;s-〉next=p-〉next;p-〉next=s;returnL;}LNodedeletel(LinkListL,inti,inte)/算法2.10,见课本p30/{/在带头结点的单链线性表L中,删除第i个元素,并由e返回其值/LinkListp=L,q;intj=O;while(p->next&&j4、(p->next)j>i-l)returnL;/删除位置不合理/q=p->next;p-〉next=q-〉next;e=q->data;free(q);returnL;voidListTraverse(LinkListL){LinkListp=L-〉next;while(p){printf(u%dn,p->data);p=p->ncxt;}printf(MH);}voidmain(){LinkListLb;intp=NULL;Lb=CreateList(N);/逆位序输入n个元素的值/printf("Lb=”);/输出链表Lb的内容/ListTraverse(L5、b);1^=11^11(1±,2,9);/在带头结点的单链线性表1.屮第i个位置之前插入元素e/printf(nLb=");/输出链表Lb的闪容ListTravcrsc(Lb);Lb=delete(Lb,3,p);/在带久•结点的单谜线性表L中,删除策i个元素,并由p返IhIK•值/printf("Deletenumber:%d",p);printf(nLb=");/输出链表Lb的内容/ListTraverse(Lb);}实验二栈的建立、插入和删除参考程序#include^include#defincSTACK1N1TSIZ6、E100/存储空间初始分配景/#defineINC10/存储空间分配增量/typedefstruct{charbase;/在栈构造之前和销毁之后,base值为NULL/chartop;/栈顶指针/intstacksize;/当前已分配的存储空间,以元素为单位/}sqstack;voidInitstack(sqstack氺s){/构造一个空栈s/(s).base=(char)mal1oc(STACKTNITSIZEsize()f(char));if(!(s).base)exit(0);/存储分配失败/(s).top=(s).base;(s)•stacksize=STA7、CK_INIT_SIZE;voidpush(sqstacks,charx)/插入元素e为新的元素/{if(((s).top-(s)=(s)>stacksize){(s).base=(char)realloc((s).base,((s).stacksize+INC)sizeof(char));if(!(s).base)exit(0):/存储分配失败/(s).top=(本s).base十(本s).stacksize;(氺s).stacks!ze+=TNC;}((氺s).top)++=x;intpop(sqstacks,charx){/荇栈不空,则删除S
4、(p->next)j>i-l)returnL;/删除位置不合理/q=p->next;p-〉next=q-〉next;e=q->data;free(q);returnL;voidListTraverse(LinkListL){LinkListp=L-〉next;while(p){printf(u%dn,p->data);p=p->ncxt;}printf(MH);}voidmain(){LinkListLb;intp=NULL;Lb=CreateList(N);/逆位序输入n个元素的值/printf("Lb=”);/输出链表Lb的内容/ListTraverse(L
5、b);1^=11^11(1±,2,9);/在带头结点的单链线性表1.屮第i个位置之前插入元素e/printf(nLb=");/输出链表Lb的闪容ListTravcrsc(Lb);Lb=delete(Lb,3,p);/在带久•结点的单谜线性表L中,删除策i个元素,并由p返IhIK•值/printf("Deletenumber:%d",p);printf(nLb=");/输出链表Lb的内容/ListTraverse(Lb);}实验二栈的建立、插入和删除参考程序#include^include#defincSTACK1N1TSIZ
6、E100/存储空间初始分配景/#defineINC10/存储空间分配增量/typedefstruct{charbase;/在栈构造之前和销毁之后,base值为NULL/chartop;/栈顶指针/intstacksize;/当前已分配的存储空间,以元素为单位/}sqstack;voidInitstack(sqstack氺s){/构造一个空栈s/(s).base=(char)mal1oc(STACKTNITSIZEsize()f(char));if(!(s).base)exit(0);/存储分配失败/(s).top=(s).base;(s)•stacksize=STA
7、CK_INIT_SIZE;voidpush(sqstacks,charx)/插入元素e为新的元素/{if(((s).top-(s)=(s)>stacksize){(s).base=(char)realloc((s).base,((s).stacksize+INC)sizeof(char));if(!(s).base)exit(0):/存储分配失败/(s).top=(本s).base十(本s).stacksize;(氺s).stacks!ze+=TNC;}((氺s).top)++=x;intpop(sqstacks,charx){/荇栈不空,则删除S
此文档下载收益归作者所有