为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

【精品】线性表可能达到的最大长度20

2017-12-21 8页 doc 21KB 30阅读

用户头像

is_650122

暂无简介

举报
【精品】线性表可能达到的最大长度20【精品】线性表可能达到的最大长度20 #include #include #define MAXSIZE 100 //线性表可能达到的最大长度 #define OK 1 #define ERROR 0 typedef struct Node /* 结点类型定义 */ { int data; struct Node *next; }Node, *LinkList;/* LinkList为结构指针类型*/ LinkList CreateFromHead(); LinkList CreateFromTail();...
【精品】线性表可能达到的最大长度20
【精品】线性表可能达到的最大长度20 #include #include #define MAXSIZE 100 //线性表可能达到的最大长度 #define OK 1 #define ERROR 0 typedef struct Node /* 结点类型定义 */ { int data; struct Node *next; }Node, *LinkList;/* LinkList为结构指针类型*/ LinkList CreateFromHead(); LinkList CreateFromTail(); int print(LinkList L); Node *Get (LinkList L, int i); int Insert(LinkList L,int i,int e); int DelList(LinkList L,int i,int *e); void main() { char c; int i=0,e=0,j; //插入的位置i, 插入的值e. int a=0; int *f; f=&a; LinkList S; printf("**************************\n"); printf("头插法创建线性表请按1\n"); printf("尾插法创建线性表请按2\n"); printf("输出建线性表请按3\n"); printf("插入元素请按4\n"); printf("删除元素请按5\n"); printf("退出请按e\n"); do{ c=getchar(); switch(c) { case '1':S=CreateFromHead(); break; case '2':S=CreateFromTail(); break; case '3':j=print(S); printf("\n链表长度: %d\n",j); break; case '4':printf("\n请输入待插入的地址 i:\n"); scanf("%d",&i); printf("\n请输入待插入的值 e:\n"); scanf("%d",&e); if(Insert(S,i,e)) printf("\n插入成功。\n"); // esle printf("\n插入插入失败。\n"); break; case '5':printf("\n请输入待删除元素的地址 i:"); scanf("%d",&i); if(DelList(S,i,f)) { printf("\n删除成功。\n"); printf("\n删除的元素值是%d.\n",*f); } break; default: printf("头插法创建线性表请按1\n"); printf("尾插法创建线性表请按2\n"); printf("输出建线性表请按3\n"); printf("插入元素请按4\n"); printf("删除元素请按5\n"); printf("退出请按e\n"); break; } }while(c!='e'); printf("*\n"); } LinkList CreateFromHead() { LinkList L; Node *s; int a,i; int flag=1; /* 设置一个标志变量flag,初值为1,当输入"$"时,将flag置为0, 建表结束 */ L=(LinkList)malloc(sizeof(Node)); /* 为头结点分配存储空间*/ L->next=NULL; printf("\n请输入链表的长度:\n"); scanf("%d",&a); printf("\n"); for(i=0;idata=rand(); // printf("%d ,",s->data); s->next=L->next; L->next=s; } return L; } LinkList CreateFromTail() {/*将新增的字符追加到链表的末尾*/ LinkList L; Node *r, *s; int a,i; /* 设置一个标志, 初值为1,当输入"$"时,flag为0,建 表结束 */ L=(Node *)malloc(sizeof(Node)); /* 为头结点分配存储空间 */ L->next=NULL; r=L; /* r指针始终动态指向链表的当前表尾, 以便于做尾插入, 其初值指向头结点 */ scanf("%d",&a); for(i=0;idata=rand(); printf("%d ,",s->data); r->next=s; r=s; } r->next=NULL; /* 将最后一个结点的next链域置为空, 表示链表 的结束 */ return L; }/*CreateFromTail*/ int print(LinkList L) { int k=0; /* do { printf("%d ,",S->data); S=S->next; k++; }while (S->next!=NULL); */ while (L->next!=NULL) { L=L->next; printf("%d ,",L->data); k++; } return (k); } Node *Get (LinkList L, int i) /* 在带头结点的单链表L中查找第i个结点, 若找到(1?i?n), 则返回该结点的存储位 置; */ /* 否则返回NULL */ { int j; Node *p; p=L; j=0; while (p->next!=NULL&&jnext; j++; } if(i==j) return p; /* 找到了第i个结点 */ else return NULL; /* 找不到, i?0或i>n */ } int Insert(LinkList L,int i,int e) { Node *pre,*s; int k; pre=L; k=0; while(pre!=NULL&&knext; k++; } if(k!=i-1) { printf("插入位置不合理~"); return ERROR; } s=(Node *)malloc(sizeof(Node)); s->data=e; s->next=pre->next; pre->next=s; return OK; } int DelList(LinkList L,int i,int *e) { Node *p,*r; int k; p=L;k=0; while(p->next!=NULL&&knext; k=k+1; } if(k!=i-1) { printf("删除结点的位置i不合理~"); return ERROR; } r=p->next; p->next=p->next->next; *e=r->data; free(r); return OK; }
/
本文档为【【精品】线性表可能达到的最大长度20】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索