线性表的顺序表的创建赋值及输出

 代码段基本上都是出自于教材:

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
  
#define OK      1  
#define ERROR   0  
#define INFEASIBLE  -1
#define OVERFLOW    -2 

typedef int Status;
typedef int ElemType; 

#define LIST_INIT_SIZE    100  
#define LISTINCREMENT     10 

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){
	printf("存储空间分配失败\n");
	exit(OVERFLOW);         
	}
	L.length = 0;
	L.listsize = LIST_INIT_SIZE;
	printf("一个空的线性表已经构建成功\n"); 
	return OK; 
} 
//对线性表进行赋值
Status ValueList_Sq(SqList &L){
	int i,j;
	printf("请输入线性表元素的个数:");
	scanf("%d",&i);
	if(i > L.listsize) 
	{
		while(1)
		{
			if(i > L.listsize){
				L.elem = (ElemType *)realloc(L.elem,LISTINCREMENT * sizeof(ElemType));
				L.listsize += LISTINCREMENT;
			}
			else
			break;
		}
	}
	for(j = 0;j < i;j++){
		printf("请输入第%d个元素:",j + 1);
	    scanf("%d",&L.elem[j]);	
	} 
	L.length = i;
	return OK; 
}
	Status PrintList_Sq(SqList L){
	printf("当前线性表的元素为:");
	for(int K = 0;K < L.length;K++)
	    printf("  %d",L.elem[K]);
	printf("\n");
	return OK;
 
}
int main()
{
	SqList L;
	InitList_Sq(L);
	ValueList_Sq(L);
	PrintList_Sq(L);
 } 

 

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
 
//----- 线性表的单链表存储结构-----
typedef struct LNode{
     int data;
     struct LNode *next;
}LNode, *LinkList; //这里给结构体起个别名
typedef int Status;
Status ListInsert_L(LinkList &L,int i,int e){ //在带头结点的单链线性表L中第i个位置之前插入元素e。 
 LinkList p;
 LinkList s;
 p=L;  //L的地址传送给了p。 
 int j = 0;
 while(p&&j<i-1){   //寻找第i-1个结点。 
  p=p->next;
  j++;
 }
 if(!p||j>i-1) return 0;   //i小于1或者大于表长加1。 
 s=(LinkList)malloc(sizeof(LNode));//生成新结点。 
 s->data=e;                //插入L中。 
 s->next=p->next;
 p->next=s;
 return 1;
}
int main() {
 LinkList A;
    A=(LinkList)malloc(sizeof(LNode));  //A链表初始化申请空间建立新的结点。 
   //A->next=NULL;
    //A->data=0;
    //cout<<A->data;
    for(int i=1;i<=9;i+=2){//插入1,3,5,7,9.并按递增输出。 
 ListInsert_L(A,1,i);
 A=A->next;
 cout<<A->data<<" ";
    }
 return 0;
}

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值