c語言順序表
① c語言編寫順序表
給你改了下,可以正常輸入和輸出。
initlist_Sq  read 函數中
if(!l.elem) printf("Error!"); 
l是指針 所以要改為 l->elem
l.length++;  改 l->length++;
void insert(sqlist *l,int k)中
SqList l是大寫
l-?elem[i]=t;改  l->elem[i]
 main 中
Sqlist l;   SqList l;
更改後如何下可以運行
#include "stdio.h"
#include "stdlib.h"
#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
typedef int ElemType;
typedef struct{
       ElemType *elem;
       int       length;
       int       listsize;
       }SqList;
void initlist_Sq(SqList *l){
    l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!l->elem) printf("Error!");
    l->length=0;
    l->listsize=LIST_INIT_SIZE;
    }
void read(SqList *l){
   int i;
   for(i=0;i<10;i++){
   scanf("%d",&l->elem[i]);
   l->length++;
   }
   }
void write(SqList *l){
   int i;
   for(i=0;i<l->length;i++)
   printf("%d\t",l->elem[i]);
   }
void insert(SqList *l,int k){
   int i,t;
   l->elem[0]=k;
   for(i=0;i<l->length;i++)
       if(l->elem[i]>l->elem[i+1]){
       t=l->elem[i+1];
       l->elem[i+1]=l->elem[i];
       l->elem[i]=t;
    }
    l->length++;
}
int main(){
     int x;
     SqList l;
     initlist_Sq(&l);
     read(&l);
     printf("Input the number you want to insert:\n");
     scanf("%d",&x);
     printf("The ordinary list is:\n");
     write(&l);
     printf("\nThe new list is:");
     write(&l);
     system("pause");
     return(0);
}
② c語言實現順序表
--順序表.h
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FLASE 0
typedef int Elemtype;
typedef int Status;
/*介面定義
Status InitList_Sq(SqList &L,int size,int inc);
void CreateList_Sq(SqList &L);
void print_Sq(SqList &L);
int Search_Sq(SqList L, Elemtype e);
Status DestroyList_Sq(SqList &L);
Status ClearList_Sq(SqList &L);
Status ListEmpty_Sq(SqList L);
int ListLength_Sq(SqList L);
Status GetElem_Sq(SqList L, int i, Elemtype &e);
Status PutElem_Sq(SqList &L, int i, Elemtype e);
Status Append_Sq(SqList &L, Elemtype e);
Status DeleteLast_Sq(SqList &L, Elemtype &e);
*/
--------------------
#include "順序表.h"
 
//定義順序表類型
typedef struct {
    Elemtype *elem;
    int length;
    int listsize;
    int increment;
}SqList;
//初始化順序表
Status InitList_Sq(SqList &L,int size,int inc) {
    
    L.elem = (Elemtype *)malloc(size * sizeof(Elemtype));
    L.length = 0;
    L.listsize = size;
    L.increment = inc;
    return TRUE;
}
 
//創建順序表
Status CreateList_Sq(SqList &L) {
    int i;
    printf("請輸入你要創建的順序表元素個數:\n");
    scanf_s("%d", &L.length);
    if (L.length >= L.listsize) {
        L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype));
    }
    if (!L.elem) {
        return FLASE;
    }
    printf("請輸入你要創建的順序表:\n");
    for (i = 0; i<L.length; i++) {
        scanf_s("%d", &L.elem[i]);
    }
}
 
//遍歷順序表
void print_Sq(SqList &L) {
    int i;
    for (i = 0; i<L.length; i++) {
        printf("%4d", L.elem[i]);
    }
}
 
//查找元素的位置
int Search_Sq(SqList L, Elemtype e) {
    int i = 0;
    while (L.elem[i] != e&&i<L.length) {
        i++;
    }
    if (i>L.length)
        return -1;
    else
        return i + 1;//因為C語言是從下標為0開始的,當i=0時表示第一個元素 
}
 
//銷毀順序表
Status DestroyList_Sq(SqList &L) {
    if (L.elem == NULL)
        return -1;
    else
        free(L.elem);
    printf("\n銷毀成功\n");
    return TRUE;
}
 
//清空順序表
Status ClearList_Sq(SqList &L) {
    if (L.elem == NULL)
        exit(0);
    int i;
    Elemtype *p_elem = L.elem;
    for (i = 0; i<L.length; i++) {
        *L.elem = NULL;
        L.elem++;
    }
    L.elem = p_elem;
}
 
//判斷順序表是否為空
Status ListEmpty_Sq(SqList L) {
    int i;
    Elemtype* p_elem = L.elem;
    for (i = 0; i<L.length; i++) {
        if (*L.elem != 0) {
            L.elem = p_elem;
            return FLASE;
        }
        L.elem++;
    }
    return TRUE;
}
 
//求順序表的長度
int ListLength_Sq(SqList L) {
    return L.length;
}
 
//用e返回順序表L中第i個元素的值
Status GetElem_Sq(SqList L, int i, Elemtype &e) {
    int j;
    Elemtype* p_elem = L.elem;
    if (i<1 || i>L.length)
        return FLASE;
    for (j = 1; j <= i; j++)
        L.elem++;
    e = *L.elem;
    L.elem = p_elem;
    return TRUE;
}
 
//將順序表L中第i個元素賦值為e
Status PutElem_Sq(SqList &L, int i, Elemtype e) {
    L.elem[i - 1] = e;
    return TRUE;
}
 
//在順序表L表尾添加元素e
Status Append_Sq(SqList &L, Elemtype e) {
    
    L.elem[L.length] = e;
    L.length++;
    L.listsize += L.increment;
    return TRUE;
}
 
//刪除順序表L表尾元素
    Status DeleteLast_Sq(SqList &L, Elemtype &e) {
    e = L.elem[L.length - 1];
    L.length--;
    return TRUE;
}
********************************************主函數.c*************************************************
#include <stdio.h>
#include <stdlib.h>
#include "順序表.h"
#include "源代碼.h"
 
//--------------------主函數入口--------------------
 
int main(){
    SqList L;
    int size, inc;
    int e;
    int a;
    int length; 
    int i;
    int temp;
    int j=10;
    int ee; 
    printf("\n--------------------順序表初始化------------------\n");
    printf("請輸入順序表的長度size以及擴容量:\n");
    scanf_s("%d %d", &size, &inc);
    InitList_Sq(L, size, inc);
    CreateList_Sq(L);
 
    printf("\n--------------------判斷是否為空------------------\n");
 
    if(ListEmpty_Sq(L)){
        printf("該順序表為空\n"); 
    }
    else
        printf("該順序表不為空\n");
        
    printf("\n--------------------遍歷順序表--------------------\n");
    
    printf("此時順序表為:\n");
    print_Sq(L);
    
    printf("\n--------------------查找元素----------------------\n");
 
    printf("\n請輸入要查找的元素:\n");
    scanf_s("%d",&e);
    a = Search_Sq(L, e);
    printf("%d為第%d位:\n",e,a);
    
    printf("\n--------------------輸出長度----------------------\n");
 
    length = ListLength_Sq(L); 
    printf("順序表的長度為%d\n",length);
 
    printf("\n----------將順序表L中第i個元素賦值為temp----------\n");
 
    printf("請輸入第i個元素的i值和temp值:\n");
    scanf_s("%d %d",&i,&temp);
    PutElem_Sq(L, i, temp);
    printf("\n此時順序表為:\n");
    print_Sq(L);
    
    printf("\n---------------在順序表表尾添加元素---------------\n");
 
    Append_Sq(L, j);
    printf("\n此時順序表為:\n");
    print_Sq(L);
    
    printf("\n---------------在順序表表尾刪除元素---------------\n");
 
    DeleteLast_Sq(L, ee);
    printf("\n被刪除的元素為%d\n",ee);
    printf("此時順序表為:\n");
    print_Sq(L);
    
    printf("\n-------------------清空順序表---------------------\n");
 
    ClearList_Sq(L);
    if(ListEmpty_Sq(L)){
        printf("\n清空成功\n"); 
    } 
 
    printf("\n------------------銷毀順序表----------------------\n");
 
    DestroyList_Sq(L); 
    getchar();
    getchar();
    return 0;
}
③ 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);
}
④ C語言建立順序表
#include"iostream.h"
#include"malloc.h"
#include"stdio.h"
#define MAX_LIST_SIZE 100
typedef int elemtype;
typedef struct Node
{
elemtype *data;
int length;
int listsize;
}SqList;
void InitList(SqList &L)
{
L=(SqList *)malloc(MAX_LIST_SIZE*sizeof(SqList));
L->length=0;
L->listsize=MAX_LIST_SIZE;
}
void Insert(SqList &L,int i,elemtype x)
{
int k;
for(k=L->length;k>=i;k--)
*L->data[k+1]=*L->data[k];
*L->data[k]=x;
}
void Print(SqList L)
{
for(int i=0;i<L->length;i++)
cout<<*L->data[i]<<"  ";
}
void main()
{
elemtype e;
int n;
SqList *L;
InitList(L);
cout<<"輸入你要插入的元素:"<<endl;
cin>>e;
cout<<"輸入你要插入的位置:"<<endl;
cin>>n;
Insert(L,n,e);
Print(L);
}
這里就簡要的寫了下第一小問,時間問題,沒有調試,你自己看看
其實網上這方面的資料很多的,你可以網路一下
⑤ C語言順序表問題
L->last=-1; 
順序表長度初始化為-1,if(i<1||i>=L->last+1) return 0;if語句將會始終判斷為真,不會執行下面的語句,因而就不會插入 
還有按你的插入法,是將原位置的數後移,那麼如果要插入到順序表末尾的話,i應為L->last+1吧,這樣的話,你的判斷語句就應為i>L->last+1
for(int j=L->last;j>=i;j--) /*將data[i]及後面的元素後移一個位置*/ 
L->data[j+1]=L->data[j]; 
L->data[i]=e; /*將插入的數值e附值給要第i個位序的數組元素*/ 
L->last++; /*順序表長度增1*/ 
return 1; 
}
⑥ 用C語言編寫一個有關順序表的程序代碼
#include<stdio.h>
#include<stdlib.h>
 
#define Size 50
 
//定義順序表結構體類型
typedef struct Table{
          int*head;//順序表頭指針,為整型
          int length;//順序表中元素個數
          int size;   //順序表的長度
}Table;
 
//創建順序表
Table CreateTable(){
        Table T;
        if(!(T.head=(int*)malloc(Size*sizeof(int)))){
             printf("內存分配錯誤!\n");
             exit(0);
        }
 
        T.size=Size;
        T.length=0;
        return T;
}
 
//增加
void Insert(Table T,int set,int values)//set為插入的位置,values為值
{
//首先判斷插入位置是否正確
if(set<0||set>T.length){
        printf("插入位置不正確!\n");
        reutrn;
}
 
//判斷是否有足夠的內存空間存儲增加的數
if(T.length==T.size){
   if(!(T.head=(int*)realloc(T.head,(T.size+10)*sizeof(int)))){
      printf("內存分配錯誤!\n");
      exit(0);
    }
    T.size+=10;
}
 
//插入數據
for(int i=s.length;i>set;i--)
      T.head[i]=T.head[i-1];
   
 T.head[set]=values;
  T.length++;
}      
      
 //刪除
void Delete(Tabel T,int set)
{    
     if(set<0||set>=T.length)
     {
          printf("刪除數的位置不爭確,刪除失敗!\n");
          return;
     }  
     
     //輸出數據
     for(int i=set;i<s.length;i++)
          T.head[i]=T.head[i+1];
     T.length--;
}
 
//查找
int  Search(Tabel T,int value)
{
      for(int i=0;i<T.length;i++)
           if(T.head[i]==value)
                  return i;
       return -1;
}
⑦ C語言順序表簡單問題
/*
A線性表為: 順序表練習程序(C)
B線性表為: 該字元串將寫入.txt文件
Press any key to continue
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefcharDataType;//定義數據數據類型
typedefstruct{
DataType*data;//data指向數據區的首個數據
intlength;//數據長度
}SqList;
SqList*CreateList(DataType*s){
SqList*L;
intlen=strlen(s);
L=(SqList*)malloc(sizeof(SqList));
L->data=(DataType*)malloc(len+1);
strcpy(L->data,s);
L->length=len;
returnL;
}
voidPrintList(SqList*L){
printf("%s ",L->data);
}
voidWriteFile(SqList*L,FILE*fw){
fprintf(fw,"%d%s ",L->length,L->data);
}
voidFreeList(SqList*L){
free(L->data);
free(L);
}
intmain(){
DataType*arra="順序表練習程序(C)";
DataType*arrb="該字元串將寫入.txt文件";
FILE*fw=fopen("F:\VC\順序表數據.txt","wt");
if(fw==NULL){
printf("不能打開數據文件<F:\VC\順序表數據.txt> ");
return1;
}
SqList*A=CreateList(arra);
printf("A線性表為:");
PrintList(A);
SqList*B=CreateList(arrb);
printf("B線性表為:");
PrintList(B);
WriteFile(A,fw);
WriteFile(B,fw);
fclose(fw);
FreeList(A);
FreeList(B);
return0;
}
⑧ c語言 順序表 排序
///是不是要這樣,
#include
#define
MAXSIZE
10
//
待排順序表最大長度
typedef
int
KeyType;
//
關鍵字類型為整數類型
typedef
struct
sqlist
{
KeyType
r[MAXSIZE+1];
//
r[0]閑置
int
length;
//
順序表長度
}SqList;
//建立順序表//
SqList
InputSList()
{int
x;SqList
L;
L.length=0;
printf("\n請輸入數據,結束輸入-1!\n");
scanf("%d",&x);
while(x!=-1)
{
L.r[++L.length]=x;
if(L.length==MAXSIZE)
{
printf("\n順序表已滿!\n");
break;
}
scanf("%d",&x);
}
return
L;
}
//直接插入排序//
void
InsertionSort
(SqList
*L
)
{
//
對順序表
L
作直接插入排序。
int
i,j;
SqList
*p=L;
for
(
i=2;
ilength;
++i
)
if
(p->r[i]
<
p->r[i-1])
{
p->r[0]
=
p->r[i];
p->r[i]=p->r[i-1];
for
(
j=i-2;
p->r[0]
<
p->r[j];
--
j
)
p->r[j+1]
=
p->r[j];
//
記錄後移
p->r[j+1]
=
p->r[0];
//
插入到正確位置
}
}
//冒泡排序//
void
BubbleSort(SqList
*L)
{
int
i,j,t;
SqList
*p=L;
for
(i=p->length;i>1;--i){
for
(j=1;j<i;++j)
if
(p->r[j+1]r[j]){
t=p->r[j+1];
p->r[j+1]=p->r[j];
p->r[j]=t;
}
}
}
//簡單選擇排序//
void
SelectSort
(SqList
*L
)
{
SqList
*p=L;
int
i,
j,
k;
KeyType
temp;
for
(i=1;
ilength;
++i)
{
k=i;
for
(j=i+1;
jlength;
j++)
if
(p->r[j]r
[k])
k=j;
if
(k!=i)
{temp=p->r
[i];
p->r
[i]=p->r
[k];
p->r
[k]=temp;
}
}
}
void
display(SqList
*L)
{
SqList
*p;
p=L;
if
(p->length!=0)
{
while(p->length)
{
printf("%d
",p->r[p->length]);
p->length--;
}
}
printf("\n");
}
void
main()
{
SqList
L;
L=InputSList();
InsertionSort
(&L);
//
SelectSort
(&L)
;
//
BubbleSort(&L);
display(&L);
}
⑨ 是C語言中建立順序表的程序
C語言中建立順序表的操作順序如下:
1.清空順序表:其實清空只不過將元素長度置0,讓後面插入數據函數的長度從0開始,其實並不是真正清空,之前的數據元素在內存中還存在,只不過可以被新元素覆蓋而已。
2.判斷順序表是否為空

⑩ C語言順序表
#include <stdio.h>#include <stdlib.h>
typedef struct {
 int data[20];
 int length;
}SqList;
void initnode(SqList &L);
void creatnode(SqList &L);
void printnode(SqList &L);
void main() //對函數返回值修飾
{
 SqList L;
 initnode(L); //引言不需要&,去掉&
 creatnode(L); //引言不需要&,去掉&
 printnode(L); //引言不需要&,去掉&,另外函數名字寫錯啦,應該是printnode
}
void initnode(SqList &L)
{
 //L.data=(SqList*)malloc(100*sizeof(SqList)); //不用分配內存啦,參數L的內存是調用函數分配的
 L.length=0;
}
void creatnode(SqList &L)
{
 int i,n;printf("輸入學生數量:\n");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {    
  printf("請輸入第%d個學生數據",i+1);    
  scanf("%d",L.data);L.length++;
 }
}
void printnode(SqList &L)
{
 int i;
 for(i=0;i<L.length;i++)
 {
  printf("%d",L.data[i]);
 }
}
錯誤的地方確實很多,修改的地方都加註釋啦,修改之後編譯通過啦,有疑問請追問,多謝~
