当前位置:文档之家› 数据结构作业答案(大连理工大学)

数据结构作业答案(大连理工大学)


数据结构作业 2013
nizhi(L); printf("顺序表逆置后为:\n"); xsList(L); } }
2. 从键盘读入 n 个整数(升序),请编写算法实现: (1) (2) (3) (4) (5) 元素。 选作:使用文本菜单完成功能选择及执行。 CreateList():建立带表头结点的单链表; PrintList():显示单链表,(形如:H->10->20->30->40); InsertList():在有序单链表中插入元素 x; ReverseList():单链表就地逆置; DelList():在有序单链表中删除所有值大于 mist(SqList L) { int i=L.length,k; for(k=0;k<i;k++) printf("%d ",L.elem[k]); printf("\n"); }
//顺序表逆置 void nizhi(SqList &L) { int i=0,j=L.length-1; ElemType temp; for(;i<j;i++,j--) { temp=L.elem[i];
参考答案:
#include<stdio.h> #include<malloc.h> #include<process.h> #define #define #define #define #define #define TRUE FALSE OK ERROR INFEASIBLE OVERFLOW 1 0 1 0 -1 -2
数据结构作业 2013
typedef typedef
int int
Status; ElemType;
typedef struct node { ElemType data; struct node *link; }Lnode, *LinkList;
//头插法建立单链表 void Create_L1(LinkList &L, int n) { LinkList p; int i; L=(LinkList)malloc(sizeof(Lnode)); L->link = NULL; for (i = n; i > 0; --i) { p=(LinkList)malloc(sizeof(Lnode)); scanf("%d",&p->data); p-> link = L-> link; L-> link = p; } }
数据结构作业 2013
L.listsize = LIST_INIT_SIZE; return OK; } //顺序表在第 i 个元素之前插入 e Status sxbcr(SqList &L, int i, ElemType e) { ElemType *p,*q; if((i<1) || (i>L.length+1)) return (ERROR); else { q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return (OK); } }
数据结构作业 2013
L.elem[i]=L.elem[j]; L.elem[j]=temp; } } main() { SqList L; char flag1='y',flag2='n'; int i; ElemType k; if(InitList_Sq(L)) { printf("建立空顺序表成功!\n"); do{ printf("当前线性表长度为:%d\n",L.length); printf("请输入要插入元素的位置:"); scanf("%d",&i); printf("请输入要插入的元素值:"); scanf("%d",&k); if(sxbcr(L,i,k)) { printf("插入成功,插入后顺序表长度为:%d\n",L.length); printf("插入后的顺序表为:"); xsList(L); } else printf("插入失败"); printf("\n 继续插入元素?(y/n) "); fflush(stdin); scanf("%c",&flag1); }while(flag1=='y');
数据结构作业 2013
作业 1. 线性表
编程作业: 1. 将顺序表逆置,要求用最少的附加空间。
参考答案 #include <stdio.h> #include <malloc.h> #include <process.h> #define LIST_INIT_SIZE #define LISTINCREMENT #define #define #define #define #define #define typedef typedef TRUE FALSE OK ERROR INFEASIBLE OVERFLOW int int Status; ElemType; 100 10 1 0 1 0 -1 -2
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) exit(OVERFLOW); L.length = 0;
//尾插法建立单链表 void Create_L2(LinkList &L,int n) { LinkList s, p; int i; L=(LinkList)malloc(sizeof(Lnode)); L->data=0; L->link=NULL; p=L; for(i=1;i<=n;i++) { s=(LinkList)malloc(sizeof(Lnode)); scanf("%d",&s->data);
相关主题