順序表的創建增刪改查c語言,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;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312738.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 15:17
下一篇 2025-01-06 15:17

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論