刚学数据结构,希望有一个简单的线性表代码参考,能输入数就行了
答案:1 悬赏:0 手机版
解决时间 2021-03-27 04:52
- 提问者网友:鐵馬踏冰河
- 2021-03-26 11:29
刚学数据结构,希望有一个简单的线性表代码参考,能输入数就行了
最佳答案
- 五星知识达人网友:雾月
- 2021-03-26 13:08
线性表有顺序存储和链式存储,数据结构的代码都比较多,不是几行就可以了,下面是链表(线性表的链式存储结构)的基本操作,你看看
#include "stdio.h"
#include "stdlib.h"
#include"string.h"
#define OK 1
#define ERROR 0
typedef char ElemType[10];//数据元素类型
typedef struct LNode{ //单链表结构
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList &L,int n)
{//顺序创建有n个结点的单链表
LinkList p,q; int i;
L=(LinkList)malloc(sizeof(LNode));//生成头节点
if(!L) return ;
L->next=NULL;q=L;
for(i=1;i<=n;++i)
{
p=(LinkList)malloc(sizeof(LNode));//生成新节点
printf("Input NO.%d :",i);
scanf("%s",p->data);
p->next=NULL;q->next=p;
q=p;
}
}
void Display_L(LinkList L)
{//L为头指针,显示单链表的每个元素
LinkList p=L->next;
while(p)
{
printf("%s ",p->data); p=p->next;
}
printf("
");
}
int GetElem_L(LinkList L,int i,ElemType e)
{//L为单链表的头指针,取为位序为i的元素值,并赋值给变量e
LinkList p=L->next; int j=1;
while(p&&j {
p=p->next; j++;
}
if(!p||j>i) return ERROR;
strcpy(e,p->data);return OK;
}
int ListInsert_L(LinkList &L,int i,ElemType e)
{//L为单链表的头指针,表示在位序为i的元素前插入数据e
LinkList p=L,s;int j=0;
while(p&&j {
p=p->next; ++j;
}
if(!p||j>i-1) return ERROR;//i值不合理
s=(LinkList)malloc(sizeof(LNode));
strcpy(s->data,e);
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete_L(LinkList &L,int i,ElemType e)
{//L为单链表的头指针,删除位序为i的数据元素,并将其值赋值给e
LinkList p=L,q; int j=0;
while(p&&j {
p=p->next; ++j;
}
if(!p||j>i-1) return ERROR;//i值不合理
q=p->next;p->next =q->next ;//删除结点
strcpy(e,q->data );free(q);//释放结点
return OK;
}
void main()
{
LinkList L;
ElemType e;
int n;
printf("请输入单链表的长度n=");
scanf("%d",&n);
CreateList_L(L,n);
printf("
原始单链表是:");Display_L(L);
if(GetElem_L(L,3,e))printf("
3号结点的内容是:%s
",e);
if(ListDelete_L(L,6,e))
printf("
删除6号结点后的单链表是:");Display_L(L);
if(ListInsert_L(L,4,"李"))
printf("
在4号结点前插入后的单链表是:
");Display_L(L);
}
#include "stdio.h"
#include "stdlib.h"
#include"string.h"
#define OK 1
#define ERROR 0
typedef char ElemType[10];//数据元素类型
typedef struct LNode{ //单链表结构
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList &L,int n)
{//顺序创建有n个结点的单链表
LinkList p,q; int i;
L=(LinkList)malloc(sizeof(LNode));//生成头节点
if(!L) return ;
L->next=NULL;q=L;
for(i=1;i<=n;++i)
{
p=(LinkList)malloc(sizeof(LNode));//生成新节点
printf("Input NO.%d :",i);
scanf("%s",p->data);
p->next=NULL;q->next=p;
q=p;
}
}
void Display_L(LinkList L)
{//L为头指针,显示单链表的每个元素
LinkList p=L->next;
while(p)
{
printf("%s ",p->data); p=p->next;
}
printf("
");
}
int GetElem_L(LinkList L,int i,ElemType e)
{//L为单链表的头指针,取为位序为i的元素值,并赋值给变量e
LinkList p=L->next; int j=1;
while(p&&j {
p=p->next; j++;
}
if(!p||j>i) return ERROR;
strcpy(e,p->data);return OK;
}
int ListInsert_L(LinkList &L,int i,ElemType e)
{//L为单链表的头指针,表示在位序为i的元素前插入数据e
LinkList p=L,s;int j=0;
while(p&&j
p=p->next; ++j;
}
if(!p||j>i-1) return ERROR;//i值不合理
s=(LinkList)malloc(sizeof(LNode));
strcpy(s->data,e);
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete_L(LinkList &L,int i,ElemType e)
{//L为单链表的头指针,删除位序为i的数据元素,并将其值赋值给e
LinkList p=L,q; int j=0;
while(p&&j
p=p->next; ++j;
}
if(!p||j>i-1) return ERROR;//i值不合理
q=p->next;p->next =q->next ;//删除结点
strcpy(e,q->data );free(q);//释放结点
return OK;
}
void main()
{
LinkList L;
ElemType e;
int n;
printf("请输入单链表的长度n=");
scanf("%d",&n);
CreateList_L(L,n);
printf("
原始单链表是:");Display_L(L);
if(GetElem_L(L,3,e))printf("
3号结点的内容是:%s
",e);
if(ListDelete_L(L,6,e))
printf("
删除6号结点后的单链表是:");Display_L(L);
if(ListInsert_L(L,4,"李"))
printf("
在4号结点前插入后的单链表是:
");Display_L(L);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯