C语言实现线性表的基本操作详解

目录

  • 前言
  • 一、实训名称
  • 二、实训目的
  • 三、实训要求
  • 四、实现效果
  • 五、顺序存储代码实现
  • 六、链式存储代码实现

前言 这里使用的工具是DEV C++
可以借鉴一下

一、实训名称 线性表的基本操作

二、实训目的 1.掌握线性表的基本概念
2.掌握线性表的存储结构(顺序存储与链式存储)
3.掌握线性表的基本操作

三、实训要求 1.线性表可以顺序表也可以用单链表实现,鼓励大家用两种方式实现。
2.创建线性表时,数据从键盘输入整形数据
3.线性表类型定义和或各种操作的实现,可以用教材给出的方法,也可以自己设计。

四、实现效果

五、顺序存储代码实现 源码
#include#include#define MAX 20#define LISTINCREMENT 10typedef struct{ int *elem; int length; int listsize; }sqlist; void Creatlist(sqlist &L){//创建一个线性表L.elem=(int *)malloc(MAX*sizeof(int)) ; if(!L.elem)return ; L.listsize=MAX; printf("输入表的长度:"); scanf("%d",&L.length); printf("输入%d的个数:",L.length); for(int i=0; iL.length+1)return; //1<=i<=listlength(L)+1; int *p,*q; q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]); p>=q; --p)*(p+1)=*p; *q=e; ++L.length; return; } int listdelete(sqlist &L){//删除元素int i,e; printf("输入要删除的元素\n"); scanf("%d",&e); i=makesureElem(L,e); if((i<1)||(i>L.length))return 0; else{int *p,*q; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for(++p; p<=q; ++p)*(p-1)=*p; //被删除元素之后的元素左移-L.length; printf("元素被删除!"); }return 0; } int main(){ sqlist L; Creatlist(L); Traverse(L); LocateElem(L,1); Listinsert(L); Traverse(L); ; listdelete(L); Traverse(L); return 0; }


六、链式存储代码实现 源码
#include #include #include structdanlianbiao_Node{int data; struct danlianbiao_Node *next; }; //base的结构体 structdanlianbiao{int length; struct danlianbiao_Node *base; }; struct danlianbiao *danlianbiao_init(); void danlianbiao_free(struct danlianbiao *list); //清除 void danlianbiao_clear(struct danlianbiao *list); int danlianbiao_length(struct danlianbiao *list); //添加 void danlianbiao_add(struct danlianbiao *list,int index,int value); void danlianbiao_remove(struct danlianbiao *list,int index); //修改 void danlianbiao_set(struct danlianbiao *list,int index,int value); int danlianbiao_get(struct danlianbiao *list,int index ); //查询 int danlianbiao_lookup(struct danlianbiao *list,int value); int danlianbiao_isempty(struct danlianbiao *list,int value); void menu(){ printf("********目录*******\n"); printf("输出单链表中的各元素值1\n"); printf("在单链表中插入数据元素2\n"); printf("在单链表中插入数据元素3\n"); printf("寻找单链表中某一个数值4\n"); printf("结束程序0\n"); printf("**********************************\n"); }int main(int argc, char *argv[]) { int n,m,i,e; printf("请输入元素的个数 :"); scanf("%d",&n); printf("以此输入%d个数据元素 :",n); menu(); printf("输入你的选择:"); scanf("%d",&m); switch(m){case 1:printf("现在链表的元素为:"); break; case 2:printf("依次输入插入位置和数据元素(空格隔开):"); scanf("%d %d",&i,&e); } return 0; } struct danlianbiao *danlianbiao_init(){ struct danlianbiao *list=NULL; list=( struct danlianbiao *)malloc(sizeof( struct danlianbiao )); list->base=(struct danlianbiao_Node *)malloc(sizeof(struct danlianbiao_Node)); list->base->data=https://www.it610.com/article/-1; list->base->next=NULL; list->length=0; return list; } void danlianbiao_free(struct danlianbiao *list){ struct danlianbiao_Node *pnode=NULL; //可能出现问题指针 while(list->base!=NULL){pnode=list->base; list->base=pnode->next; free(pnode); }//whilefree(list); } //清除 void danlianbiao_clear(struct danlianbiao *list){struct danlianbiao_Node *next=NULL; //可能出现问题指针 struct danlianbiao_Node *pnode=NULL; while(list->base->next!=NULL){ next=list->base->next; list->base->next=next->next; free(pnode); }//while list->length=0; } //获得单链表的长度 int danlianbiao_length(struct danlianbiao *list){ } //添加 ,该函数没有错误 void danlianbiao_add(struct danlianbiao *list,int index,int value){int i=0; struct danlianbiao_Node *pnode=NULL; struct danlianbiao_Node *p=NULL; p=(struct danlianbiao_Node *)malloc(sizeof(struct danlianbiao_Node )); p->data=https://www.it610.com/article/value; pnode=list->base; while(inext; i++; }//whilep->next=pnode->next; pnode->next=p; list->length++; } // //移除这一项没有错误 void danlianbiao_remove(struct danlianbiao *list,int index){ struct danlianbiao_Node *pnode=NULL; struct danlianbiao_Node *p=NULL; p=(struct danlianbiao_Node *)malloc(sizeof(struct danlianbiao_Node )); //有错误 int value; int i; p->data=https://www.it610.com/article/value; pnode=list->base; while(inext; i++; }p=pnode->next; pnode->next=p->next; free(p); } //设置值 ,这一项没有错误 void danlianbiao_set(struct danlianbiao *list,int index,int value){int i=0; struct danlianbiao_Node *pnode=NULL; struct danlianbiao_Node *p=NULL; p=(struct danlianbiao_Node *)malloc(sizeof(struct danlianbiao_Node )); p->data=https://www.it610.com/article/value; pnode=list->base; while(inext; i++; }//whilepnode->data=https://www.it610.com/article/value; } //得到一个数值函数方法没有错误 int danlianbiao_get(struct danlianbiao *list,int index ){int i=0; int value; struct danlianbiao_Node *pnode=NULL; struct danlianbiao_Node *p=NULL; p=(struct danlianbiao_Node *)malloc(sizeof(struct danlianbiao_Node )); p->data=https://www.it610.com/article/value; pnode=list->base; while(inext; i++; }//while return( pnode->data); } // int danlianbiao_lookup(struct danlianbiao *list,int value){int i=0; struct danlianbiao_Node *pnode=NULL; for(pnode=list->base->next; pnode !=NULL; pnode=pnode->next){i++; if(pnode->data=https://www.it610.com/article/=value) {return i; }//if}//forreturn 0; }int danlianbiao_isempty(struct danlianbiao *list,int value){}

【C语言实现线性表的基本操作详解】到此这篇关于C语言实现线性表的基本操作详解的文章就介绍到这了,更多相关C语言 线性表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读