本文目录一览:
- 1、用c语言创建一个顺序表,并完成创建,显示,查找,插入,删除,退出等任务
- 2、数据结构 c语言版 ——顺序表的查找、插入与删除
- 3、用c语言编写一段程序,建立一个顺序表(需要自己输入数据,并插入数据、删除数据)。
- 4、用C语言编写一个有关顺序表的程序代码
- 5、使用C语言编写程序,实现顺序表的基本运算——插入和删除。
用c语言创建一个顺序表,并完成创建,显示,查找,插入,删除,退出等任务
#includestdio.h
int n=0; //全局变量数组中元素个数
/***************************函数说明************************/
void insert(int * ss);
void show(int *ss);
void delete(int * ss);
void updata(int * ss);
/***************************主 函 数**************************/
main()
{
int bb[20]={0},j;
do
{
printf(" ╔-----------------------------------------------╗\n"); //显示一个简易菜单
printf(" ┆ 1 --- 插入(Insert) ┆\n");
printf(" ┆ 2 --- 修改(Update) ┆\n");
printf(" ┆ 3 --- 删除(Delete) ┆\n");
printf(" ┆ 4 --- 显示( Show ) ┆\n");
printf(" ┆ 5 --- 退出( Exit ) ┆\n");
printf(" ╚-----------------------------------------------╝\n");
printf("请输入所要进行的操作序号: ");
scanf("%d",j); //接受用户的选择
switch(j) //接受用户的函数
{case 1:insert(bb);
break;
case 2:updata(bb);
break;
case 3:delete(bb);
break;
case 4:show(bb);
break;
case 5:break;
default:printf("错误选择!请重选\n");break;
}
}while(j!=5); //直到i被赋值为5
return 0;
}
/**********************************插入函数**************************************/
void insert(int * ss)
{
int i,e,k=n; // i为要插入的位置 e为要插入的值
do{
printf("请输入要插入的位置: ");
scanf("%d",i);
//插入的位置为从 1-----n+1 超出则提示输入有误
if((i(k+1))||i==0) printf("输入有误!! \n");
}while((i(k+1))||i==0);//直到输入的i值为 1---k+1
do{
ss[k+1]=ss[k]; //ss[i]后面的元素向后移动
}while((k--)!=(i-1));
printf("请输入要插入的值: ");
scanf("%d",e);
ss[i-1]=e;
n++;
}
/**********************************显示函数**************************************/
void show(int *ss)
{
int i=0;
for(i;in;i++)
{
printf(" %d -",ss[i]);
} //printf("\b");
printf("\n");
}
/**********************************删除函数**************************************/
void delete(int * ss)
{
int i,t;
do{
printf("请输入要删除的位置: ");
scanf("%d",i);
if(in) printf("输入有误!! 请重新输入: ");
}while(in);
t=i-1;
do{
ss[t]=ss[t+1];
}while((t++)!=n);
n--;
}
/**********************************修改函数**************************************/
void updata(int * ss)
{
int i,e;
do{
printf("请输入要修改的位置: ");
scanf("%d",i);
if(in) printf("输入有误!! 请重新输入: ");
}while(in);
printf("请输入要修改后的值: ");
scanf("%d",e);
ss[i-1]=e;
}
数据结构 c语言版 ——顺序表的查找、插入与删除
#includestdio.h
#includestdlib.h
#define N 10 //顺序表的最大容量
int length=0; //顺序表的当前元素个数
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100//线性表存储的空间初始化分配量
#define LISTINCREAMENT 10 //线性表存储空间的分配增量
typedef struct LNode//线性单链表存储结构
{
int data;
struct LNode *next;
}LNode,*LinkList;
int CreatList_L(LinkListL)//创建一个线性链表
{
L=(LinkList)malloc(sizeof(LNode));//分配一个空间给链表,作为头结点
if(!L) exit(OVERFLOW);
L-next=NULL;
return OK;
}
int DestroyList_L(LinkList L)//销毁链表
{
if(L) free(L);
return OK;
}
int ListInsert_L(LinkListL,int i,int e)//再练表的第i个元素前插入一个元素e
{
LinkList p=L;//p指针定位于i-1
LNode *s;
int j=0;
while(pji-1) {p=p-next;j++;}//定位
if(!p||ji-1) return ERROR;//如果i1或大于链表元素个数+1
s=(LNode*)malloc(sizeof(LNode));
if(!s) exit(OVERFLOW);
s-data=e; //完成插入操作
s-next=p-next;
p-next=s;
return OK;
}
int ListDelet_L(LinkListL,int i,inte)//删除链表L中的第i个元素,并返回给e;
{
LinkList p=L;
LNode* q;
int j=0;
while(!pji-1) {p=p-next;j++;}//p指针定位于i-1;
if(!p-next||ji-1) return ERROR;
e=p-next-data; //完成删除操作
q=p-next;
p-next=p-next-next;
free(q);
return OK;
}
int ListTraverse_L(LinkList L,int n)//链表的遍历
{
int i=0;
if(!L)return ERROR;
L=L-next;
while(L)
{
if(L-data==n)return i;
L=L-next;
i++;
}
return FALSE;
}
int InverseSingleList_L(LinkList L)
{
if(!L-next||!L-next-next)//如果链表少于2个Node那么链表不需要改变顺序
return OK;
LNode *p,*q;
p=L-next; //第一次因为p是最后一个连接所以把p-next设为空
q=p-next;
p-next=NULL;
p=q;
while(p)
{
q=p-next; //用q去保留p后面一个Node;
p-next=L-next;
L-next=p;
p=q;
}
return OK;
}
int main()
{
int List[N];
LinkList L;
int ch,exit='N';
do
{
system("CLS");
printf("\t\t********************************************\n");
printf("\t\t* 1.创建一个顺序表 .........(1) *\n");
printf("\t\t* 2.在顺序表中查找元表.........(2) *\n");
printf("\t\t* 3.在顺序表中插入元表.........(3) *\n");
printf("\t\t* 4.在顺序表中删除元表.........(4) *\n");
printf("\t\t* 5.退出 .........(5) *\n");
printf("\t\t********************************************\n");
printf("\n请选择操作代码:");
ch=getchar();
switch(ch)
{
case '1':
printf("\n请输入十个元素");
CreatList_L(L);
for(length=0;lengthN;length++)
{
scanf("%d",List[length]);
getchar();
ListInsert_L(L,length+1,List[length]);
}
printf("\n创建成功!");
getchar();
break;
case '2':
scanf("%d",List[0]);
if(ListTraverse_L(L,List[0]))printf("该元素存在该年表的第%d个位置",ListTraverse_L(L,List[0]));
else printf("不存在该元素");
getchar();
break;
case '3':
scanf("%d%d",length,List[0]);
ListInsert_L(L,length,List[0]);
system("pause");
break;
case '4':
scanf("%d",length);
ListDelet_L(L,length,List[0]);
system("pause");
break;
case '5':
printf("\n您是否真的要退出程序(Y/N):");
getchar();
exit=getchar();
break;
default:
getchar();
printf("\n无效输入,请重新选择...:");
getchar();
break;
}
}while(exit!='y'exit!='Y');
}
用c语言编写一段程序,建立一个顺序表(需要自己输入数据,并插入数据、删除数据)。
#include stdio.h
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 10
#define ERROR 0
typedef struct{
int *elem;
int length;
int listsize;
} SqList;
void InitList_Sq(SqList *l)
{
l-elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!l-elem) exit(0);
l-length=0;
l-listsize=LIST_INIT_SIZE;
}
int InList(SqList *l)
{
int *p,*newbase;
p=l-elem;
while(1)
{
for(;pl-elem+l-listsize;p++)
{
scanf("%d",p);if(*p==-1) break;l-length++;
}
if((p==l-elem+l-listsize))
{
newbase=(int *)realloc(l-elem,(l-listsize+LISTINCREMENT)*sizeof(int));
p=l-elem+l-length;
l-listsize=l-listsize+LISTINCREMENT;
if(!l-elem) return ERROR;
}
if(*p==-1) break;
}
return 1;
}
void PrList(SqList *l)
{
int *p,i;
p=l-elem;
for(;pl-elem+l-length;p++)
printf("%d ",*p);
}
int ListInsert_sq(SqList *l,int i,int e)
{
int *newbase,*p,*q;
if(i1||il-length) return ERROR;
if(l-length==l-listsize)
{
newbase=(int *)realloc(l-elem,(l-listsize+LISTINCREMENT)*sizeof(int));
if(!newbase) return ERROR;
l-elem=newbase;
l-listsize+=LISTINCREMENT;
}
q=l-elem+i-1;
for(p=l-elem+l-length-1;p=q;p--)
*(p+1)=*(p);
*q=e;
l-length+=1;
return 1;
}
int ListDelet_sq(SqList *l,int i)
{
int *p,e;
if((i1)||(il-length)) return ERROR;
p=l-elem+i-1;
e=*p;
for(;pl-elem+l-length-1;p++)
*p=*(p+1);
l-length--;
printf("要删除的元素是:%d\n",e);
return 1;
}
void main()
{
int i,j,n;
char a;
SqList la;
InitList_Sq(la);
printf("请输入顺序表中的元素:\n");
if(!InList(la)) return ERROR;
do
{
printf("请输入需要插入元素的位置及元素:(a,b)\n");
scanf("%d,%d",i,j);
if(!ListInsert_sq(la,i,j)) return ERROR;
printf("是否还需要插入元素?(N/Y)");
getchar();
scanf("%c",a);
if(a=='N'||a=='n') break;
}while(1);
do
{
printf("请输入需要删除元素的位置:\n");
scanf("%d",i);
if(!ListDelet_sq(la,i)) return ERROR;
printf("是否还需要删除元素?(N/Y)");
getchar();
scanf("%c",a);
if(a=='N'||a=='n') break;
}while(1);
printf("最后的顺序表为:\n");
PrList(la);
}
用C语言编写一个有关顺序表的程序代码
#include stdio.h
#include malloc.h
#define MaxSize 50
typedef char ElemType;
typedef struct
{
ElemType elem[MaxSize];
int length;
}SqList;
void InitList(SqList *L) /* 初始化顺序表 */
{
L=(SqList *)malloc(sizeof(SqList));
L-length=0;
}
void CreateListR(SqList *L,ElemType a[],int n) /*创建顺序表 */
{
int i;
for(i=0;in;i++)
L=(SqList *)malloc(sizeof(SqList));
L-elem[i]=a[i];
L-length++;
}
void DispList(SqList *L) /* 输出顺序表 */
{
int i;
if(ListEmpty(L)) return;
for(i=0;iL-length;i++)
printf("%c",L-elem[i]);
printf("\n");
}
int ListLength(SqList *L) /* 求顺序表的长度 */
{
return(L-length);
}
int ListEmpty(SqList *L) /* 求顺序表是否为空 */
{
return(L-length==0);
}
int GetElem(SqList *L,int i,ElemType e) /*求顺序表中某个数据的元素值 */
{
if(i1||iL-length)
return 0;
else
e=L-elem[i-1];
return 1;
}
int LocateElem(SqList *L,ElemType e) /*按值查找元素*/
{
int i=0;
while(iL-lengthL-elem[i]!=e) i++;
if(i=L-length)
return 0;
else
return i+1;
}
int ListInsert(SqList *L,int i,ElemType e) /*按i位置插入元素*/
{
int j;
if(i1||iL-length+1)
return 0;
i--;
for (j=L-length;ji;j--)
L-elem[j]=L-elem[j-1];
L-elem[i]=e;
L-length++;
return 1;
}
int ListDelete(SqList *L,int i,ElemType e) /*删除某个位置的元素*/
{
int j;
if (i1||iL-length)
return 0;
i--;
e=L-elem[i]; /*e中的放elem[i]有何用..以后没用到*/
for(j=i;jL-length-1;j++)
L-elem[j]=L-elem[j+1];
L-length--;
return 1;
}
void DestroyList(SqList *L) /*销毁链表*/
{
free(L);
}
void main()
{
SqList L;
ElemType a[]={'a','b','c','d'};
int c;
int e;
while(1)
{
printf("Please Choose the step you want ?\n\n");
scanf("%d",c);
if(c==0) break;
switch(c)
{
case 1: InitList(L);break;
case 2: CreateListR(L,a,4);break;
case 3: DispList(L);break;
case 4: printf("long %d", ListLength(L));break;
case 5: printf("%d",ListEmpty(L));break;
case 6: GetElem(L,3,e);break;
case 7: LocateElem(L,'a');break;
case 8: ListInsert(L,4,'f');break;
case 9: DispList(L);break;
case 10: ListDelete(L,3,e);break;
case 11: DispList(L);break;
case 12: DestroyList(L);break;
default: printf("error data");break;
}
}
}
使用C语言编写程序,实现顺序表的基本运算——插入和删除。
typedef struct
{
int *elem;
int length;
int listsize;
} Sqlist;
status Create_sq(Sqlist *L,int n)
{
int i;
L-elem=(int*)malloc(100*sizeof(int));
if(!L-elem) return 0;
for(i=0;in;i++)
scanf("%d",(L-elem[i]));
L-length=n;
L-listsize=100;
return 1;
}
status Listinsert_sq(Sqlist *L,int i,int e)
{
int *q,*p,*newbase;
if(i1||iL-length+1) return 0;
if(L-length=L-listsize)
{
newbase=(int*)realloc(L-elem,(L-listsize+10)*sizeof(int));
if(!newbase) exit(-2);
L-elem=newbase;
L-listsize+=10;
}
q=(L-elem[i-1]);
for(p=(L-elem[L-length-1]);p=q;--p)
*(p+1)=*p;
*q=e;
++L-length;
return 1;
}
int main()
{
Sqlist L1;
int n,a;
int i,e;
printf("\n please input the number of data:\n");
scanf("%d",n);
if(Create_sq(L1,n)==1)
{
scanf("%d%d",i,e);
a=Listinsert_sq(L1,i,e);
if(a==1)
printf("insert success\n");
else printf("insert false\n");
printf("the list elements are:\n");
for(i=1;i=L1.length;i++)
{
printf("%d\t",L1.elem[i-1]);
}
}
return 0;
}