A. c语言目录操作
我不知道楼主具体指的是什么?什么叫取得目录中的函数名?是指文件名吗?
如果是的话,看这个程序:
#include <process.h>
main()
{
clrscr();
system("dir e:\\younger"); /*"e:\\younger"可以改成任意目录*/
getch();
}
这样可以吗?
B. C语言数组四个基本操作
#include<stdio.h>
#include<stdlib.h>
#include<string.h>void main()
{
int e,index,temp,j,l,i;
int a[11];
printf("输入10个数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++) //显示
printf("%d ",a[i]);printf("\n你需要查找的元素\n");
scanf("%d",&e);
for(i=0;i<10;i++)
{
if(a[i]==e) printf("%d ",i+1); //如果存在,返回其位置
}
printf("\n你需要插入的元素\n");
scanf("%d",&a[10]);
printf("\n排序\n");
for(i=0;i<11;i++)
{index=i;<br> for(j=i+1;j<11;j++)<br> if(a[index]<a[j])<br> index=j;<br> temp=a[i];<br> a[i]=a[index];<br> a[index]=temp;<br>}for(i=0;i<11;i++)
printf("%d ",a[i]);}删除实现不了
C. C语言顺序表的基本操作
#include<stdio.h>
#include<stdlib.h>
typedefintDataType;//定义数据数据类型
typedefstruct{
DataType*data;//data指向数据区的首个数据
intlength;//数据长度
}SqList;
voidSort(SqList*L){
inti,j,k;
DataTypetmp;
for(i=0;i<L->length-1;++i){
k=i;
for(j=i+1;j<L->length;++j)
if(L->data[k]>L->data[j])
k=j;
if(k!=i){
tmp=L->data[k];
L->data[k]=L->data[i];
L->data[i]=tmp;
}
}
}
SqList*CreateList(DataTypea[],intn){
inti;
SqList*L;
L=(SqList*)malloc(sizeof(SqList));
L->data=(DataType*)malloc(n*sizeof(DataType));
L->length=n;
for(i=0;i<n;++i)L->data[i]=a[i];
Sort(L);
returnL;
}
intInsertList(SqList*L,DataTypex){
inti,j;
for(i=0;i<L->length;i++){
if(x<=L->data[i]){
for(j=L->length;j>=i;j--)
L->data[j+1]=L->data[j];//结点后移
L->data[i]=x;
L->length++;
return1;
}
}
L->data[L->length++]=x;
return1;
}
intRemoveListElem(SqList*L,DataTyped){
inti,j;
for(i=0;i<L->length;++i){
if(L->data[i]==d){
for(j=i;j<L->length-1;++j)
L->data[j]=L->data[j+1];
L->length--;
return1;
}
}
return0;
}
SqList*AndList(SqList*A,SqList*B){/*A∩B*/
inti,j,k=0;
intlen=(A->length>B->length)?B->length:A->length;
SqList*C=(SqList*)malloc(sizeof(SqList));
C->length=len;
C->data=(DataType*)malloc(len*sizeof(DataType));
for(i=0;i<A->length;++i){
for(j=0;j<B->length;++j){
if(A->data[i]==B->data[j]){
C->data[k++]=A->data[i];
break;
}
}
}
C->length=k;
returnC;
}
SqList*OrList(SqList*A,SqList*B){/*A∪B*/
inti,j,flag;
DataTypee;
SqList*C=(SqList*)malloc(sizeof(SqList));
C->length=A->length+B->length;
C->data=(DataType*)malloc(C->length*sizeof(DataType));
for(i=0;i<A->length;++i)C->data[i]=A->data[i];
for(i=0;i<B->length;++i){
e=B->data[i];
flag=1;
for(j=0;j<C->length;++j){
if(e==C->data[j]){
flag=0;
break;
}
}
if(flag)InsertList(C,e);
}
returnC;
}
voidPrintList(SqList*L){
inti;
for(i=0;i<L->length;++i)
printf("%d",L->data[i]);
printf(" ");
}
voidFreeList(SqList*L){
free(L->data);
free(L);
}
voidmain(){
DataTypex;
DataTypearra[]={36,24,31,5,90,65,70,39,37};
DataTypearrb[]={9,8,43,51,37,89,33,46,29,80,56};
intalen=sizeof(arra)/sizeof(arra[0]);
intblen=sizeof(arrb)/sizeof(arrb[0]);
SqList*A=CreateList(arra,alen);
printf("A线性表为:");
PrintList(A);
SqList*B=CreateList(arrb,blen);
printf("B线性表为:");
PrintList(B);
SqList*C=AndList(A,B);
SqList*D=OrList(A,B);
printf("C=A∩B:");
PrintList(C);
printf("D=A∪B:");
PrintList(D);
printf("在D表中插入数据:");
scanf("%d",&x);
InsertList(D,x);
printf("D表插入x后:");
PrintList(D);
printf("删除D表中数据:");
scanf("%d",&x);
RemoveListElem(D,x);
printf("删除x后的D表为:");
PrintList(D);
FreeList(A);
FreeList(B);
FreeList(C);
FreeList(D);
}
D. C语言怎么操作数组
这是个动态分配的问题可以用
realloc()函数真的很好用的,这里我也不多说了,
给个例子看看,这个是我以前在网络上看到的。很久了都忘了你自己看看,看不懂再说
#include"stdio.h"
#include"stdlib.h"
main()
{int i=0;
char *c,x;
c=malloc(sizeof(char));
while((x=getchar())!='\n')
{i++;
c=realloc(c,i*sizeof(char));
c=x;
}
for(;i>0;i--)
printf("%c",(c--));
printf("\n");
system("pause");
}这是模拟栈的作用
需要用。。。
E. C语言基本操作
标准输入输出应加头文件其预处理命令为
#include<stdio.h>(是C的编译器的话可以不加)
printf(格式控制,输出列表)如:
pritnf("%d,%c\n",a,b)
函数原型 int printf(char *format,arg,……)
scanf(格式控制,输出列表)如:
scanf("%d,%c\n",&a,&b)
函数原型 int scanf(char *format,arg,……)
其他常用的标准输入输函数如getchar,gets,putchar,puts等在这里就不具体说明了
请参看C库函数(C语言的书上都有)
F. C语言链表结点操作
链表中,假设有一个头节点,即一个head指针指向链表的第一个节点,如果要查找目的节点,可以从头开始往后搜索,注意,head节点指向的是一个数据结构,该结构包括element(元素值),还有一个next指针,该指针指向下一个链表节点。遍历链表进行查找时,循环条件可以是while(pone !=NULL),在循环内部就不断调用pone=pone.next,一旦找到满足条件的就退出循环,即break。在这里假设链表为a->b->c,假设pone指向a节点,可以通过pone.element访问a节点的值,并且pone.next就是b,在循环过程中,pone=pone.next,如果当前的pone为a,那么执行这句话后就是将b给pone,即将pone指针指向b,在循环中一直使用这句话就可以保证pone一直向后移动直到找到目标节点。希望可以帮到你。
G. C语言数组操作问题
不可以.
数组a[]={1,2,3,4}
这样初始化,表示只有4个元素的数组.不能再增加元素了.
数组a[10]={1,2,3,4}
这样就可以.
H. 对C语言数组的操作
一楼有点错误
printf("最小数下标是%d
\n最小数是
%d\n",k+1,min);
c语言下标从0开始标记,输出要加1才对。
I. C语言链表操作
包括链表的创建删除添加和释放操作!!
#include<stdio.h>
#include<stdlib.h>
struct node *create();
void print_list(struct node *head);
struct node * insert_node(struct node *h,int x,int y);
struct node * delete_node(struct node *h,int z);
void shifang(struct node *head);
struct node
{
char data;
struct node *next;
};
void main()
{
struct node *head;
int x,y,z;
head=create();
print_list(head);
printf("\n输入插入结点的位置的值和插入的数值:");
scanf("%d%d",&x,&y);
head=insert_node(head,x,y);
print_list(head);
printf("\n输入要删除的结点:");
scanf("%d",&z);
head=delete_node(head,z);
print_list(head);
printf("\n释放链表.\n");
}
struct node *create() //建立链表函数
{
printf("请输入各节点(以-1结尾):\n");
int x;
//定义指针*head,*tail,*s;
struct node *head,*tail,*s;
//head和tail初始化,生成一个头结点
head=tail=(struct node *)malloc(sizeof(struct node));
//在循环中,生成新结点、赋值、连接、尾指针后移
scanf("%d",&x);
while(x!=-1)
{
s=(struct node *)malloc(sizeof(struct node));
s->data=x;
tail->next=s;
tail=s;
scanf("%d",&x);
}
//尾结点的指针域赋NULL
tail->next=NULL;
return head;
}
void print_list(struct node *head) //输出链表函数
{
//定义工作指针*p并赋初值p=head->next;即指向第一个结点
struct node *p;
p=head->next;
//判断链表是否为空,空:输出空表的信息,否则:输出所有结点
if(p==NULL)
printf("The list is NULL.");
else
//在循环中输出当前结点,工作指针后移
{
printf("head->");
while(p!=NULL)
{
printf("%d->",p->data);
p=p->next;
}
printf("end.");
}
}
struct node * insert_node(struct node *h,int x,int y) //添加结点函数
{
struct node *p,*q,*s;
//生成要插入的新结点
s=(struct node *)malloc(sizeof(struct node));
s->data=y;
q=h;
p=h->next;
//查找要插入结点的位置
while((p!=NULL)&&(p->data!=x))
{
q=p;
p=p->next;
}
//插入结点
q->next=s;s->next=p;
return(h);
}
struct node * delete_node(struct node *h,int z) //删除结点函数
{
struct node *p,*q;
q=h;
p=h->next ;
//查找要删除结点的位置
if(p!=NULL)
{
while((p!=NULL)&&(p->data!=z))
{
q=p;
p=p->next;
}
//释放结点
if(p->data ==z)
{
q->next=p->next ;
free(p);
}
}
return(h);
}
void shifang(struct node *head) //释放链表函数
{
struct node *p;
//逐个释放结点
while(head!=NULL)
{
p=head;
head=head->next;
free(p);
}
}
J. 线性表的基本操作c语言实现
代码如下:
头文件:
2_1.h
#ifndef _2_1_H
#define _2_1_H
typedef void SeqList;
typedef void SeqListNode;
//创建线性表
SeqList * SeqList_Create(int capacity);
//销毁线性表
void SeqList_DesTroy(SeqList * list);
void SeqList_Clear(SeqList* list);
int SeqList_Length(SeqList* list);
int SeqList_Capacity(SeqList* list);
int SeqList_Insert(SeqList* list, SeqListNode* node, int pos);
SeqListNode* SeqList_Get(SeqList* list, int pos);
SeqListNode* SeqList_Delete(SeqList* list, int pos);
#endif
源文件:
// 顺序线性表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <malloc.h>
#include <stdlib.h>
#include "2_1.h"
typedef unsigned int TSeqListNode;
typedef struct {
int len; //长度
int capacity;//总长度
TSeqListNode * node;//每个节点的指针
} TSeqList;
int main()
{
SeqList* list = SeqList_Create(5);//创建线性表
int i = 6;//赋值6个变量,已超过线性表最大值 5
int j = 1;
int k = 2;
int x = 3;
int y = 4;
int z = 5;
int index = 0;
SeqList_Insert(list, &i, 7); //将这6个变量插入线性表中
SeqList_Insert(list, &j, 0);
SeqList_Insert(list, &k, 0);
SeqList_Insert(list, &x, 0);
SeqList_Insert(list, &y, 0);
SeqList_Insert(list, &z, 0);
//遍历
for(index=0; index<SeqList_Length(list); index++)
{
int* p = (int*)SeqList_Get(list, index);
printf("%d ", *p);
}
printf(" ");
//删除操作
while( SeqList_Length(list) > 0 )
{
int* p = (int*)SeqList_Delete(list, 0);
printf("删除了: %d ", *p);
}
SeqList_Clear(list);
SeqList_DesTroy(list);
system("pause");
return 0;
}
//创建线性表
SeqList * SeqList_Create(int capacity)
{
TSeqList* ret = NULL ;
if(capacity >= 0)
{
ret = (TSeqList*)malloc(sizeof(TSeqList) + sizeof(TSeqListNode)*capacity); //为线性表分配空间,包含结 //构体和节点的总大小
}
if(NULL != ret)
{
ret->len = 0;
ret->capacity = capacity;
ret->node = (TSeqListNode*)(ret + 1);//将节点指向上述分配到的空间的后部分
}
return ret;
}
//销毁
void SeqList_DesTroy(SeqList * list)
{
free(list);
}
//清空
void SeqList_Clear(SeqList* list)
{
TSeqList * ret = (TSeqList*)list;
if(NULL != ret)
{
ret->len = 0;
}
}
//获得线性表的长度
int SeqList_Length(SeqList* list)
{
TSeqList * ret = (TSeqList*)list;
int len = -1;
if(NULL != ret)
{
len = ret->len;
}
return len;
}
//线性表的总长度
int SeqList_Capacity(SeqList* list)
{
TSeqList * ret = (TSeqList*)list;
int capacity = -1;
if(NULL != ret)
{
ret->capacity = capacity;
}
return capacity;
}
//插入
int SeqList_Insert(SeqList* list, SeqListNode* node, int pos)
{
TSeqList * sList = (TSeqList*)list;
int i,ret = -1;
if((sList != NULL) &&(pos >= 0) && sList->capacity >= sList->len+1)
{
if(pos >= sList->len)
{
pos = sList->len;
}
for(i = sList->len; i > pos; i--)
{
sList->node[i] = sList->node[i-1];
}
sList->node[i] = (TSeqListNode)node;
++sList->len;
ret = 1;
}
return ret;
}
//获得指定位置的节点
SeqListNode* SeqList_Get(SeqList* list, int pos)
{
TSeqList * sList = (TSeqList*)list;
TSeqListNode* node = NULL;
if(NULL != sList && pos>=0 && pos < sList->len)
{
node = (TSeqListNode*)sList->node[pos];
}
return node;
}
//删除
SeqListNode* SeqList_Delete(SeqList* list, int pos)
{
TSeqList * sList = (TSeqList*)list;
SeqListNode * node = SeqList_Get( list, pos);
int i;
if(sList != NULL && pos >= 0 && pos< sList->len)
{
for( i=pos+1; i<sList->len; i++)
{
sList->node[i-1] = sList->node[i];
}
sList->len--;
}
return node;
}
演示:
资料拓展:
线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。
我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向链表和循环链表依旧是线性表。
在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。
线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。